javascript - 在监听更改时查询多个键 - Firebase

标签 javascript firebase firebase-realtime-database

我正在使用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);
});

唯一的改进是定义回调函数,否则您将创建与要监听的键一样多的回调函数,然后将引用放入变量中。

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

相关文章:

java - 从帖子中获取值

ios - Swift Firebase 移除观察者不移除

firebase - 在 Firebase 中选择数据

android - 使用 Firebase 同步应用程序和服务器数据库

java - 从火力基地得到 child ?

android - 应用程序终止时从 FCM 启动 Activity ?

javascript - keydown 事件在引导的 Firefox 插件中不起作用

javascript - 尝试 extjs 5 简单网格面板(示例不起作用)

javascript - 当光标悬停在文本上时显示图像

javascript - 使用 Javascript/Jquery 将 div 内容导出到 Excel