Node.js 有没有办法监听 MongoDB 集合中特定数据的变化,并在发生变化时触发事件?
问问题
8638 次
4 回答
14
好吧,这是一个老问题,但我也在为同样的事情苦苦挣扎。我发现了许多帮助我制定解决方案的花絮,并将其作为库发布:
https://github.com/TorchlightSoftware/mongo-watch
该库是用咖啡脚本编写的。对于喜欢的人,这里有一个 javascript 示例。
var MongoWatch = require('mongo-watch'),
watcher = new MongoWatch({parser: 'pretty'});
watcher.watch('test.users', function(event) {
return console.log('something changed:', event);
});
于 2013-03-06T08:49:04.537 回答
2
MongoDB 显然现在支持触发器和监视,这个答案已经过时了。
[原创]相信你是在找数据库触发器。
不幸的是,MongoDB 还不支持它们,所以我认为您不能直接从数据库中监听更改。您需要设置某种通知系统(例如 pub/sub),以便在集合发生更改时向相关方发出警报。
于 2011-09-28T22:26:22.830 回答
1
MongoDB 3.6 引入了变更流,旨在准确解决这个问题。
这是一个例子:https ://github.com/thakkaryash94/mongodb-change-streams-nodejs-example
const pipeline = [
{
$project: { documentKey: false }
}
];
const db = client.db("superheroesdb");
const collection = db.collection("superheroes");
const changeStream = collection.watch(pipeline);
// start listen to changes
changeStream.on("change", function (change) {
console.log(change);
});
于 2019-06-28T14:42:53.550 回答