mongodb прослушивает изменения при изменении nodejs коллекции

#node.js #mongodb

Вопрос:

Я хочу прослушать изменения в коллекции mongodb в nodejs. Итак, я попытался

 constructor(@InjectModel("Alert") private readonly alertModel: Model<Alert>) {
    this.startAlertBot();
}
 

и это startAlertBot

 startAlertBot(): void {
    console.log("Starting Bot");
    this.alertModel.watch().on("change", (data) => {
      console.log("data", data);
    });
}
 

но это показывало

 MongoServerError: The $changeStream stage is only supported on replica sets
 

Итак, используя эту ссылку, я попытался настроить свой локальный автономный сервер с набором реплик, это команда

 mongod --port 27017 --dbpath ../db_data/db0 --replSet rs0 --bind_ip localhost,127.0.0.1
 

но это показывает

 {"t":{"$date":"2021-11-27T13:04:01.478 05:30"},"s":"I",  "c":"-",        "id":4939300, "ctx":"monitoring-keys-for-HMAC","msg":"Failed to refresh key cache","attr":{"error":"NotYetInitialized: Cannot use non-local read concern until replica set is finished initializing.","nextWakeupMillis":800}}
{"t":{"$date":"2021-11-27T13:04:02.279 05:30"},"s":"I",  "c":"-",        "id":4939300, "ctx":"monitoring-keys-for-HMAC","msg":"Failed to refresh key cache","attr":{"error":"NotYetInitialized: Cannot use non-local read concern until replica set is finished initializing.","nextWakeupMillis":1000}}
 

как я могу это исправить?

Ответ №1:

После выполнения этой команды в cmd (режим администратора)

 mongod --port 27017 --dbpath /srv/mongodb/db0 --replSet rs0
 

следующим шагом было инициировать набор реплик.

Для запуска набора реплик необходимо установить mongosh, и после установки это предоставит вам оболочку, в которой вам нужно выполнить эту команду

 rs.initiate()
 

теперь на первом терминале, который показывал сообщения о следующем вызове пробуждения, будет показано, что сервер запущен сейчас.