【发布时间】:2016-09-20 16:03:30
【问题描述】:
我有一个 Firebase 数据库,其根目录为 { hello: 'world'}。每当我尝试在 Node 中读取 hello 的值时,除非我从 Node 进程中修改该值,否则不会执行回调。
这是once 电话:
let callback = (snapshot) => {
console.log('The value is ', snapshot.val());
};
db.ref('hello').once('value', callback);
此时,我希望回调运行并打印“值是世界”打印...但没有任何反应。现在说我使用on 而不是once。即使我从 Firebase Web 控制台或其他 Node 进程修改值,仍然不会调用回调!奇怪的是,所有这些代码都可以在具有相同库版本(v3.0.2)的浏览器中按预期工作。
我设法执行回调的唯一方法是直接从同一个 Node 进程修改值。
db.ref('hello').once('value', callback);
db.ref('test').set('moon');
// => 'The value is moon.'
我创建了一个带有测试脚本的repository,以帮助复制调试问题。
【问题讨论】:
-
您的节点处理正在退出吗?你确定它在回调应该发生的时候还在运行吗?
-
是的,Node 进程仍在运行。
-
尝试添加错误回调并查看它记录的错误。
-
@Kato 永远不会调用错误回调。
-
@Kato 查看我发布的存储库链接。 Firebase 工作人员也验证了此错误。
标签: node.js firebase firebase-realtime-database