2017-09-27 66 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功能。