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

标签 javascript node.js windows-8 firebase

我正在尝试使用 firebase 的 Node.js 包来监听我的 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

我是服务器端编程的新手,不知道该怎么做。我一定错过了一些重要的东西。我应该先用 Node 设置特殊的服务器设置吗?或者制作一个守护进程,每隔一秒左右运行一个带有 once() 方法的脚本?

最佳答案

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

  1. 您将一个值推送到 https://mydatabase.firebaseio.com/users/
  2. on('child_changed' 事件在您的脚本中触发
  3. 你的脚本将一个新的 child 推到值下
  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 及其 Node 工具。他们有一个很棒的调试器,可以让你单步调试代码。在您的回调中设置一个断点(在 ref.push 行中),将快速告诉您哪里出了问题。

关于javascript - 如何为 Firebase 实现 Node.Js 服务器端事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30675908/

相关文章:

javascript - 显示/隐藏具有优先级的 div

node.js - 如何在 sequelize 中关联表格

node.js - 无法理解 Mocha 'Getting Started' 指令

xaml - Windows 8 底部应用栏

wpf - Windows 8 中的 WinRT 和 WPF

javascript - 如何近似Java的Character.isLetterOrDigit()来识别Javascript中的非英文字母、数字?

javascript - js 变量到 css [剪辑路径图片库]

javascript - 使用 Collection2 在 Meteor 中插入空白的嵌入式架构

node.js - Azure 移动服务中的 Neo4j

.NET 在 Windows 8 中访问 DB2