gpt4 book ai didi

javascript - 在监听变化时查询多个键 - Firebase

转载 作者:行者123 更新时间:2023-11-30 21:08:16 25 4
gpt4 key购买 nike

我正在使用 this question作为引用,因为它非常相似。

如果我有一组定义的键:

-Ke1uhoT3gpHR_VsehIv
-Ke8qAECkZC9ygGW3dEJ
-Ke8qMU7OEfUnuXSlhhl

并且还知道它们都存在于一个节点下(比如说 /items),我将如何查询它们,同时还要监听这些键的变化(也就是不使用 myRef.once(value) 但使用 myRef.on('value', snapshot => { ... })

我知道这是可能的:

var keys = [ 
"-Ke1uhoT3gpHR_VsehIv",
"-Ke8qAECkZC9ygGW3dEJ",
"-Ke8qMU7OEfUnuXSlhhl"
];
var promises = keys.map(function(key) {
return firebase.database().ref("/items/").child(key).once("value");
});
Promise.all(promises).then(function(snapshots) {
snapshots.forEach(function(snapshot) {
console.log(snapshot.key+": "+snapshot.val());
});
});

但它是静态快照。是否可以在监听变化时做同样的事情?

最佳答案

我也在找这个。所以它似乎不存在,仅仅是因为 Firebase 有一个有效的连接,没有必要为了连接性能而组合“查询”。

所以你最终会为所有键设置 on('value', ...) 事件监听器。根据您问题中给出的代码片段,您可以为此编写的代码如下所示:

var keys = [ 
"-Ke1uhoT3gpHR_VsehIv",
"-Ke8qAECkZC9ygGW3dEJ",
"-Ke8qMU7OEfUnuXSlhhl"
];
function itemUpdate(snapshot) {
console.log(snapshot.key+": ", snapshot.val());
}
var ref = firebase.database().ref("/items/");
keys.forEach(function(key) {
ref.child(key).on("value", itemUpdate);
});

唯一的改进是定义回调函数,否则您将创建尽可能多的回调函数,因为您有键可以监听,然后将 ref 放在 var 中。

关于javascript - 在监听变化时查询多个键 - Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46408279/

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