Миграция с 3.x на 4.x
При миграции с Mongoose 3 на Mongoose 4 необходимо учитывать несколько несовместимых изменений.
`findOneAndUpdate()` новое поле теперь по умолчанию `false`
Функции Mongoose findOneAndUpdate(), findOneAndRemove(), findByIdAndUpdate(), и findByIdAndRemove() являются просто обёртками вокруг команды MongoDB findAndModify. Как сервер MongoDB, так и драйвер MongoDB NodeJS устанавливают опцию new по умолчанию в false, но mongoose 3 перезаписывал это значение. Для большей согласованности с документацией сервера MongoDB, mongoose будет использовать false по умолчанию. То есть, findOneAndUpdate({}, { $set: { test: 1 } }, callback); вернёт документ до применения операции $set.
Чтобы вернуть документ с внесёнными изменениями в результате обновления, используйте опцию new: true.
MyModel.findOneAndUpdate({}, { $set: { test: 1 } }, { new: true }, callback);
CastError и ValidationError теперь используют `kind` вместо `type` для отчёта об ошибках
В Mongoose 3, CastError и ValidationError имели поле type. Например, ошибки валидации, определённые пользователем, имели свойство type, содержащее строку 'user defined'. В Mongoose 4 это свойство переименовано в kind из-за внутреннего использования свойства Error.type в движке JavaScript V8.
Запрос теперь имеет функцию `.then()`
В mongoose 3, вам необходимо было вызвать .exec() в цепочке запросов, чтобы получить промис, как в MyModel.find().exec().then();. Запросы Mongoose 4 — это промисы, поэтому вы можете сделать MyModel.find().then() вместо этого. Будьте осторожны, если используете функции, такие как Q.ninvoke() из q или возвращаете запрос mongoose из промиса.
Дополнительная информация
Похожие блог-посты:
© 2010 LearnBoost
Licensed under the MIT License.
https://mongoosejs.com/docs/4.x/docs/migration.html