В сообщении об ошибке указывается, что документ не может быть найден, поэтому, если это собственный запрос, попробуйте заключить его в ObjectId
, то есть ObjectId("507f1f77bcf86cd799439011")
.
Ответ на ваш вопрос о том, как вы можете дождаться документа или справиться с ошибкой, зависит от вашего драйвера БД. Например, если вы используете обещанный-монго:
db.collection.update(...).then((doc) => {
// This will run once updated
}).catch((err) => { //handle the error});
Подробнее: https://github.com/gordonmleigh/promised-mongo
Или, если вы используете модуль mongodb npm:
db.collection.update({_id: ObjectId('yourId'), {updateKey:
'updateVal}, (err,val) => {
if(err) //handle it and return
// update finished
return callback(doc);
});
подробнее на https://www.npmjs.com/package/mongodb
Если проблема все еще существует, попробуйте установить запрос с флагом {upsert: true}
, как описано здесь
Имейте в виду, что входящие сообщения сокетов могут не всегда приходить в том же порядке, в котором они были отправлены, обрабатывать состояние соответствующим образом или использовать очередь.