【发布时间】:2016-09-19 16:01:54
【问题描述】:
我是 nodejs 的新手,但在 Firebase 版本 3.0.2 中已经有一个可以工作的 js 客户端程序。事实证明,我需要一个服务器来完成一些在 js 客户端中不可能完成的简单事情。
当我在 nodejs 中尝试这个基本的东西时,什么也没有发生——数据库中的数据永远不会被检索到,并且节点服务器程序继续运行而没有错误。服务端程序(server.js)如下:
var firebase = require("firebase");
var myApp =firebase.initializeApp({
serviceAccount: "xxx/xxx.json",
databaseURL: "https://xxx.firebaseio.com"
});
firebase.database().ref().on('value', function(snapshot) {
console.log("urls value changed"); // NEVER GETS HERE
console.log(snapshot.val());
});
数据库已加载数据,并且正在尝试查看根目录。当我通过控制台将项目添加到数据库时,仍然没有任何反应。更具体的 ref() 值无效。
我正在使用节点版本 v4.4.4。该程序在命令行(在 MBP/OSX 上)使用“node server.js”调用。
我花了好几个小时试图找出我做错了什么——可能是一些愚蠢的事情!提前感谢您的帮助。
【问题讨论】:
-
您的程序很可能只是在(异步)
on()从服务器获取值之前退出。所以你的回调永远不会被调用。例如,请参阅有关如何保持进程活跃的答案:stackoverflow.com/questions/23622051/… -
我遇到了同样的问题,我也使用他们的快速启动项目github.com/firebase/quickstart-nodejs/tree/master/database 进行了测试,但仍然没有运气。我认为这是他们的错误
-
@FrankvanPuffelen:进程永远不会退出 - 它似乎在等待数据库事件,但从未得到它。
-
附加一个错误处理程序,以便您查看是否有问题。
firebase.database().ref().on('value', function(snapshot) { ... }, function(error) { console.error(error); }) -
使用错误处理程序,它仍然只是坐着,什么也不做。
标签: node.js firebase firebase-realtime-database