繁体   English   中英

如何为Firebase实现Node.Js服务器端事件侦听器?

[英]How do I Implement a Node.Js server-side event listener for Firebase?

我正在尝试使用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()方法运行脚本的守护进程?

我很确定你在这里创造了一个无限循环:

  1. 您将值推送到https://mydatabase.firebaseio.com/users/
  2. on('child_changed'事件在你的脚本中触发
  3. 您的脚本会将新子项推送到该值下
  4. 所以我们回到第2步并重复一遍

它也会很快发生,因为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行中)将快速显示出现了什么问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM