gpt4 book ai didi

node.js - 查询后Firebase管理数据库快照数据?

转载 作者:太空宇宙 更新时间:2023-11-04 03:25:15 26 4
gpt4 key购买 nike

设置

让我们想象这是我的 JSON 数据

values: {
a: {
randomValue: "set",
sorter: 1
},
b: {
randomValue: "hat",
sorter: 2
}
}

可以使用管理数据库(来自 Cloud Functions)从我的数据库检索数据,如下所示

admin.database().ref('values/a').once('value').then(snapshot => {
console.log(snapshot.val().randomValue + ' .. ' + snapshot.val().sorter);
});

输出设置.. 1

问题

一旦我将查询附加到我的请求,它就会停止工作,即它不会像提到的那样工作 in the documentation 。在那里,他们可以清楚通过查询访问snapshot.val().height

虽然当我像这样进行查询时

admin.database().ref('values').orderByChild('sorter').equalTo(1).once('value').then(snapshot => {
console.log(snapshot.val());
console.log(snapshot.val().randomValue + ' .. ' + snapshot.val().sorter);
console.log(snapshot.child('randomValue').val() + ' .. ' + snapshot.child('sorter').val());
}

输出将令人惊讶如下

a: {
randomValue: "set",
sorter: 1
}
undefined .. undefined
null .. null

所以 snapshot.val() 确实给了我完整的数据,但没有一种访问方式能给我任何数据,只有 undefinednull!为什么会这样?

最佳答案

我相信在这种情况下您需要以 snapshot.val().a.randomValue 的形式访问这些字段。请注意,您正在针对 values Node 而不是 values/a Node 运行查询。因此,您的结果包含 a 属性。

更新

当您针对 values Node 运行查询并订阅 value event 时(这是 once() 方法内部执行的操作),您将获得查询的完整值(父键 + 子键)。要只获取 child ,您需要订阅 child event 。这就是文档中的示例的作用。例如:

admin.database().ref('values').orderByChild('sorter').equalTo(1).once('child_added').then(snapshot => {
console.log(snapshot.val());
console.log(snapshot.val().randomValue + ' .. ' + snapshot.val().sorter);
console.log(snapshot.child('randomValue').val() + ' ..' + snapshot.child('sorter').val());
});

将产生您想要获得的输出:

{ randomValue: '设置', 排序器: 1 }
设置..1
设置..1

关于node.js - 查询后Firebase管理数据库快照数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45543072/

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