gpt4 book ai didi

javascript - 如何使用 VueJS 从 Firebase 检索集合的子项

转载 作者:行者123 更新时间:2023-12-03 00:07:59 24 4
gpt4 key购买 nike

我无法从 Firebase 返回正确的结果。

我的代码是

const rootRef = firebase.database().ref()
console.log(rootRef)
const allEmployees = rootRef.child('employees').orderByChild('name').startAt('J')
console.log("These are all employees which names start with a J" + allEmployees)

这是控制台中的结果

Reference {repo: Repo, path: Path, queryParams_: QueryParams, 
orderByCalled_: false}
database: (...)
key: (...)
orderByCalled_: false
parent: (...)
path: Path {pieces_: Array(0), pieceNum_: 0}
queryParams_: QueryParams {limitSet_: false, startSet_: false,
startNameSet_: false, endSet_: false, endNameSet_: false, …}
ref: (...)
repo: Repo {repoInfo_: RepoInfo, app: FirebaseAppImpl, dataUpdateCount:
0, statsListener_: null, eventQueue_: EventQueue, …}
root: (...)
__proto__: Query

These are all employees which names start with a J https://xxxxxxxx .firebaseio.com/employees

我试图实现的是打印出满足条件的员工列表,即他们的名字以 J 开头的位置。

我还尝试匹配员工所属的类别

rootRef.child('employees').orderByChild('categoryID').equalTo('608Av3zkDS0cg2Iu66b2')
console.log(allEmployees)

但这给出了相同的结果,即数据库的 url。

有人可以帮助我吗?我已经为此绞尽脑汁好几个小时了。

最佳答案

您当前的代码所做的只是创建对 Firebase 实时数据库的查询。它尚未执行该查询,因此没有可显示的结果。您最终打印的只是查询对象的定义。

要从数据库获取结果,请使用 on()once() 将监听器附加到查询,如 documentation on listeners 中所示。 .

更可能的方法:

const rootRef = firebase.database().ref()
const query = rootRef.child('employees').orderByChild('name').startAt('J')
query.once('value', function(snapshot) {
snapshot.forEach(function(employeeSnapshot) {
console.log(employeeSnapshot.key, employeeSnapshot.val());
});
})

我强烈建议您先搜索有关 Firebase 的简单简短教程,然后再继续。花费一个小时来构建诸如聊天应用程序之类的东西,可能会在几秒钟内向您展示您的方法的错误。

<小时/>

请注意,您似乎也误解了排序和过滤的工作原理。您的查询告诉数据库按名字对所有员工子节点进行排序,然后找到第一个以 J 开头的子节点,并返回其后的所有子节点。这还包括以 KLM 等开头的子节点。如果您不希望这样,则需要告诉 Firebase 在某个时刻停止返回节点:

const query = rootRef.child('employees').orderByChild('name').startAt('J').endAt('J\uF8FF')

此处,uF8FF 是最后一个可打印的 unicode 字符,这可确保您获得以 J 开头的所有结果(但仅限那些结果)。

<小时/>

关于javascript - 如何使用 VueJS 从 Firebase 检索集合的子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54875098/

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