Javascript 使用Node.js监控Mongo的更改

Javascript 使用Node.js监控Mongo的更改,javascript,node.js,mongodb,events,database,Javascript,Node.js,Mongodb,Events,Database,我正在使用它进行一些项目工作,我想监控我的Mongo数据库(集合)的变化,如果添加了什么,基本上会触发一个事件 有人知道这是否可能吗?我在用司机 如果不是,我还希望有任何可用的指针可以将数据从服务器(使用节点运行)推送到客户端浏览器 问题是,是否所有数据都通过node.js应用程序添加到数据库中。如果是这样,您可以使用node.js的EventEmitter类来触发事件() 如果数据库由其他应用程序填充,事情就会变得困难。在这种情况下,您需要数据库触发器之类的东西,它在MongoDB中还不可用

我正在使用它进行一些项目工作,我想监控我的Mongo数据库(集合)的变化,如果添加了什么,基本上会触发一个事件

有人知道这是否可能吗?我在用司机


如果不是,我还希望有任何可用的指针可以将数据从服务器(使用
节点运行)推送到客户端浏览器

问题是,是否所有数据都通过node.js应用程序添加到数据库中。如果是这样,您可以使用node.js的EventEmitter类来触发事件()

如果数据库由其他应用程序填充,事情就会变得困难。在这种情况下,您需要数据库触发器之类的东西,它在MongoDB中还不可用

一旦HTML5WebSockets API进入所有主流浏览器,就可以将事件推送到客户端(也称为Comet)


同时,您只能尝试使用(长期)AJAX轮询、永久帧等技术来模拟这种行为,但每种技术都有其弱点。

我将在您的mongodb中启用复制。有复制品吗?包含更改列表的数据库,类似于mysql复制日志。你可以监视它

-daniel

集合。插入({“key1”:val1,“key2”:“val2”},函数(err,info){
如果(错误){ //处理这个 } 否则{ 如果(信息){

您调用FireAndForget函数(info);在这里 它可以写入日志或发送到SQS,或执行其他子生成或进程中的操作。这甚至可以是回调,但我认为在大多数情况下,fire and forget可能会这样做。 我说“开火,忘记”,因为我认为你不需要等待 升级响应,以便随时向客户机返回所需内容。 在回答您的另一个问题时,您可以像这样返回JSON

         db.close();
         var myJSON =[];                            
         sys.puts("Cool info stored and did a non blocking fire and forget for some other mongo monitoring stuff/process and sending control back to the browser");
         sys.puts(sys.inspect(info));//remove later
         myJSON.push({"status":"success"});                     
         myJSON.push({"key1":val1,"key2":val2});//or whatev you want to send
         res.writeHead(200, { "Content-Type" : "text/plain" });
         res.write(JSON.stringify(myJSON));
         res.end();
        }
    }

自上次回答以来已近3年。我建议看:

  • nodejs和MongoDB的酒吧Sub

npm install mubsub
应该可以让你到达那里

如果是其他同步应用程序进行添加,你可以使用消息队列通知你的node.js应用程序。这一切都在服务器端。