2017-09-27 65 views
0

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

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

回答

1

确实如此,Schema.post()只能在相同的过程中工作。你或者需要使用一个跟MongoDB的oplog(如mongo-oplog)相同的库,使用所有实例连接到的消息队列(或pub/sub)自己实现它(如Redis,RabbitMQ等),或者使用支持这个的数据库本身。例如,PostgreSQL支持它的NOTIFY功能。