Spec-Zone.ru › Mongoose

Миграция с 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 из промиса.

Дополнительная информация

Похожие блог-посты:

  • Представление версии 4.0 ODM Mongoose NodeJS

© 2010 LearnBoost
Licensed under the MIT License.
https://mongoosejs.com/docs/4.x/docs/migration.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API