我正在使用Node.js进行一些项目工作,我想监视我的Mongo数据库(集合)是否有变化,如果添加了某些内容,基本上会触发事件。
任何人都知道这是否可行?我正在使用node-mongodb-native驱动程序。
如果不是,我也喜欢将服务器上的数据(使用node
)推送到客户端浏览器的任何可用指针。
答案 0 :(得分:3)
问题是是否所有数据都通过node.js应用程序添加到数据库中。如果是这样,您可以使用node.js的EventEmitter类来触发事件(http://nodejs.org/api.html#eventemitter-14)。
如果数据库由其他应用程序填充,则事情变得困难。在这种情况下,你需要像数据库触发器这样的东西,它是在MongoDB中尚未提供的AFAIK。
一旦HTML 5 websockets API进入所有主流浏览器,就可以将事件推送到客户端(aka Comet)。
与此同时,您只能尝试使用(长期)AJAX轮询,永久框架等技术来模拟此行为,但每个都有其缺点。
答案 1 :(得分:3)
我会在你的mongodb中打开复制。有一个复制?包含更改列表的数据库,类似于mysql复制日志。你可以监控它。
-daniel
答案 2 :(得分:1)
自上次回答以来差不多3年了。我建议看看:
npm install mubsub
应该让你到那里
答案 3 :(得分:0)
collection.insert({“key1”:val1,“key2”:“val2”},function(err,info){
如果(ERR){
//处理这个(事情
}
其他{
如果(信息){
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();
}
}