#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()
теперь на первом терминале, который показывал сообщения о следующем вызове пробуждения, будет показано, что сервер запущен сейчас.