我正在尝试使用firebase的Node包监听我的firebase中的数据更改。我使用的on()方法应该不停地监听更改(而不是只监听特定事件第一次出现的once()方法)我在服务器上的listener.js文件是完全是这样的:
var Firebase=require('firebase');
var Ref= new Firebase('https://mydatabase.firebaseio.com/users/');
Ref.on('child_changed',function(childsnapshot,prevchildname){
Ref.child(childsnapshot.key()).push("I hear you!");
} ) ;
但它仅适用于第一次出现,并在第二次出现后抛出致命的内存错误。
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory
我对服务器端编程很陌生,不知道该怎么做。我必须遗漏一些重要的东西。我应该首先使用节点设置特殊服务器设置吗?或者每隔一秒左右创建一个使用once()方法运行脚本的守护进程?
答案 0 :(得分:3)
我很确定你在这里创造了一个无限循环:
https://mydatabase.firebaseio.com/users/
on('child_changed'
事件在您的脚本中触发它也会很快发生,因为Firebase客户端会立即发起本地事件。
看起来你正在尝试创建一个聊天机器人。这意味着你更有可能想要创建兄弟信息:
var Firebase=require('firebase');
var ref= new Firebase('https://mydatabase.firebaseio.com/users/');
ref.on('child_changed',function(childsnapshot,prevchildname){
ref.push("I hear you!");
}) ;
请注意,使用StackOverflow调试代码效率非常低。由于您似乎在Windows上,我建议安装Visual Studio及其节点工具。他们有一个很棒的调试器,可以让你逐步完成代码。在回调中设置一个断点(所以在ref.push
行中),会很快显示出现了什么问题。