如何为 Firebase 实现 Node.Js 服务器端事件侦听器?
How do I Implement a Node.Js server-side event listener for 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
我对服务器端编程还很陌生,不知道该怎么做。我一定错过了一些重要的东西。我应该先用节点设置特殊的服务器设置吗?或者制作一个守护进程,每隔一秒左右运行一个带有 once() 方法的脚本?
我很确定你在这里创建了一个无限循环:
- 您将一个值推送到
https://mydatabase.firebaseio.com/users/
on('child_changed'
事件在您的脚本中触发
- 您的脚本在值
下推送一个新的 child
- 所以我们回到第 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!");
}) ;
请注意,使用 Whosebug 调试代码效率很低。由于您似乎在 Windows,我建议安装 Visual Studio 及其节点工具。他们有一个很棒的调试器,可以让你单步调试代码。在你的回调中设置一个断点(所以在 ref.push
行),会很快告诉你哪里出了问题。
我正在尝试使用 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
我对服务器端编程还很陌生,不知道该怎么做。我一定错过了一些重要的东西。我应该先用节点设置特殊的服务器设置吗?或者制作一个守护进程,每隔一秒左右运行一个带有 once() 方法的脚本?
我很确定你在这里创建了一个无限循环:
- 您将一个值推送到
https://mydatabase.firebaseio.com/users/
on('child_changed'
事件在您的脚本中触发- 您的脚本在值 下推送一个新的 child
- 所以我们回到第 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!");
}) ;
请注意,使用 Whosebug 调试代码效率很低。由于您似乎在 Windows,我建议安装 Visual Studio 及其节点工具。他们有一个很棒的调试器,可以让你单步调试代码。在你的回调中设置一个断点(所以在 ref.push
行),会很快告诉你哪里出了问题。