在收听更改时查询多个密钥 - Firebase

时间:2017-09-25 14:56:24

标签: javascript firebase firebase-realtime-database

我使用this question作为参考,因为它非常相似。

如果我有一组定义的键:

-Ke1uhoT3gpHR_VsehIv
-Ke8qAECkZC9ygGW3dEJ
-Ke8qMU7OEfUnuXSlhhl

并且知道它们都存在于节点下(让我们说/items),我将如何查询它们,同时还要监听这些键的更改(也就是说不使用{{1但是使用myRef.once(value)

我知道这是可能的:

myRef.on('value', snapshot => { ... })

但它是一个静态快照。在听取变化时是否可以这样做?

1 个答案:

答案 0 :(得分:1)

我也一直在寻找这个。所以它似乎不存在,只是因为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中。