我正在尝试使用Firebase的Node包监听Firebase中的数据更改。我正在使用on()方法,该方法应该不停地侦听更改(与仅侦听第一次发生的特定事件的after()方法相反),服务器上的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
我对服务器端编程非常陌生,不知道该怎么做。我一定错过了一些重要的东西。我是否应该首先使用节点设置特殊服务器设置?还是使守护进程每隔一秒钟左右用一次after()方法运行脚本?
我很确定您在这里创建了一个无限循环:
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
),将迅速向您显示出了问题所在。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句