#node.js #mongodb #mongoose
#node.js #mongodb #мангуст
Вопрос:
С тех пор, как я обновил свой пакет mongoose, я вижу это сообщение.
Предупреждение об устаревании: Mongoose:
findOneAndUpdate()
иfindOneAndDelete()
безuseFindAndModify
параметра, установленного в false, являются устаревшими. Смотрите: https://mongoosejs.com/docs/deprecations.html#findandmodify Предупреждение об устаревании: collection.findAndModify устарел. Вместо этого используйте findOneAndUpdate, findOneAndReplace или findOneAndDelete .
Боже мой!!! Я использую этот метод все….
https://mongoosejs.com/docs/deprecations.html
После прочтения документации я понимаю, что метод mongoose использует findOneAndUpdate драйвера Mongo, и теперь мы должны использовать findAndModify от Mongo Drive.
Итак, у меня есть две возможности…
- Я ничего не делаю, и в будущем предупреждение исчезнет
- Я устанавливаю этот код после подключения к mongoose
mongoose.set('useFindAndModify', false);
, предупреждение исчезает, и все довольны…
Но если я использую useFindAndModify на данный момент, как вы знаете, когда он станет бесполезным?
Какая лучшая практика для вас в этой ситуации, пожалуйста?
Большое вам спасибо!!!
Комментарии:
1. У вас есть варианты, доступные в документах («Лучший?» здесь нет лучшего). Один из вариантов — изменить ваш код (after вместо before ), а другой — изменить configure (useFindAndModify: false ). Ваш код не сломается. Со временем — я думаю, более чистым решением будет обновить код
2. Хорошо, спасибо за ваш ответ. В этом случае я не нахожу эквивалентный метод в findOneAndUpdate . findOneAndUpdate обновляет документ И возвращает новый документ. С помощью updateOne и updateMany метод возвращает данные коллекции, но не новый документ… Может быть, это мой настоящий вопрос, ха-ха
3.
updateOne
: Возвращает либо исходный документ, либо, еслиreturnNewDocument: true
, обновленный документ.