跨网络

时间:2017-09-27 00:00:32

标签: node.js mongodb mongoose

我有两个Node.js应用程序,每个应用程序在另一台机器上运行Mongoose。首先运行一个MongoDB数据库,第二个连接到它并定期添加文档。我试图在创建这些文档时添加一个钩子,以便运行数据库的服务器知道其他服务器已经添加了数据。我尝试使用Schema.post()方法,但由于Mongoose有两个独立的实例,所以它似乎无法工作。这是真的还是我只是错误地实现它?如果文档是在同一台服务器上创建的,而不是另一台服务器,那么我可以触发该钩子。

所以我的想法是直接添加挂钩到MongoDB,而不是Mongoose,但我不知道如何去做。我是在正确的轨道上吗?

1 个答案:

答案 0 :(得分:1)

确实如此,Schema.post()仅适用于同一过程。您需要使用一个尾随MongoDB oplog(如mongo-oplog)的库,使用所有实例连接到的消息队列(或pub / sub)自己实现它(如Redis) ,RabbitMQ等)或使用本机支持它的数据库。例如,PostgreSQL以其NOTIFY功能支持此功能。