Метод findOneAndModify Mongoose устарел, но не совсем

#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.

Итак, у меня есть две возможности…

  1. Я ничего не делаю, и в будущем предупреждение исчезнет
  2. Я устанавливаю этот код после подключения к mongoose mongoose.set('useFindAndModify', false); , предупреждение исчезает, и все довольны…

Но если я использую useFindAndModify на данный момент, как вы знаете, когда он станет бесполезным?

Какая лучшая практика для вас в этой ситуации, пожалуйста?

Большое вам спасибо!!!

Комментарии:

1. У вас есть варианты, доступные в документах («Лучший?» здесь нет лучшего). Один из вариантов — изменить ваш код (after вместо before ), а другой — изменить configure (useFindAndModify: false ). Ваш код не сломается. Со временем — я думаю, более чистым решением будет обновить код

2. Хорошо, спасибо за ваш ответ. В этом случае я не нахожу эквивалентный метод в findOneAndUpdate . findOneAndUpdate обновляет документ И возвращает новый документ. С помощью updateOne и updateMany метод возвращает данные коллекции, но не новый документ… Может быть, это мой настоящий вопрос, ха-ха

3. updateOne : Возвращает либо исходный документ, либо, если returnNewDocument: true , обновленный документ.