Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按键找不到firebase子级_Javascript_Reactjs_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 按键找不到firebase子级

Javascript 按键找不到firebase子级,javascript,reactjs,firebase,firebase-realtime-database,Javascript,Reactjs,Firebase,Firebase Realtime Database,我无法通过指定指定的子键找到firebase对象,并且只有在指定对象的整个路径时才能找到。为什么会这样 这很有效 ref.child(`users/${user.uid}/watchlist/${key}`) .once('value') .then(function(snapshot) { console.log(snapshot.val()); }); 这不管用 ref.child(key) .once('value') .then(function(snapsho

我无法通过指定指定的子键找到firebase对象,并且只有在指定对象的整个路径时才能找到。为什么会这样

这很有效

ref.child(`users/${user.uid}/watchlist/${key}`)
  .once('value')
  .then(function(snapshot) {
    console.log(snapshot.val());
});
这不管用

ref.child(key)
  .once('value')
  .then(function(snapshot) {
    console.log(snapshot.val());
});
我的火基连接

export const ref = firebase.database().ref()

我不知道你还能指望它怎么工作,它只查看引用的直接子级或指定的子路径。它不会在Firebase结构的嵌套路径中查找指定的键。这将是极其低效的。即使它这样做了,如果有多个匹配的键,会发生什么?它会把它们全部退回吗?如果它们在不同的深度呢?等等

Firebase实时数据库基本上是一个类似JSON的大数据树。获取所需数据的唯一方法是了解该数据的整个路径。否则就不会有任何结构

我想如果您愿意,您可以加载整个Firebase数据结构,然后编写自己的函数来查找任意键,无论它们在树中的什么位置。但是,这与Firebase库本身一样存在问题,效率低下——事实并非如此

也许这能更好地说明孩子是如何工作的。这:

ref.child(`users/${user.uid}/watchlist/${key}`);
与此基本相同:

ref.child("users").child(user.uid).child("watchlist").child(key);

虽然我怀疑第二种方法效率较低,但我不确定。

回答得很好,杰瑞德。稍微澄清一下:Firebase查询允许您使用单个动态零件搜索路径。也可以在这里看到我的答案:如果UID是唯一的,那么在db中指定特定的子项将起作用,但是我不知道这是否有效,但效率不是我关心的重点。