gpt4 book ai didi

javascript - 无法通过键找到 firebase 子项

转载 作者:行者123 更新时间:2023-12-03 03:49:05 28 4
gpt4 key购买 nike

仅当我指定对象的完整路径时,我才能通过指定特定子键来查找 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());
});

我的 Firebase 连接

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

最佳答案

我不确定您还希望它如何工作? child() is not a "search" function ,它只查看引用的直接子路径或您指定的子路径。它不会通过嵌套路径 Firebase 结构“搜索”指定的键。这将是极其低效的。即使它确实做到了这一点,如果有多个匹配的键会发生什么?它会返回所有这些吗?如果它们处于不同的深度怎么办?等等

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

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

也许这会更好地说明 child() 的工作原理。这:

ref.child(`users/${user.uid}/watchlist/${key}`);

与此基本相同:

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

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

关于javascript - 无法通过键找到 firebase 子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45245891/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com