5.0 Deprecation Warnings

Valeri Karpov edited this page Mar 13, 2017 · 8 revisions

The following functionality is considered deprecated for the 5.0 release.

  1. The mpromise promises library. Mongoose 5.0 will use native promises by default if available, otherwise no promises. You will still be able to set a custom promises library using mongoose.Promise = require('bluebird');, however, mpromise will not be supported.

  2. 3512: Throwing cast errors when calling .update(). Mongoose 4.x currently throws an exception if the criteria or update passed to MyModel.update() fails to cast. Mongoose 5.0 will communicate this error in the callback (or by rejecting the promise).

  3. The current emitIndexError option for schemas will be removed. Mongoose will always use the emitIndexError: true behavior.

  4. For asynchronous custom validators, you will have to return a promise from the validator or specify isAsync: true. Mongoose will no longer treat custom validator functions that take 2 arguments as asynchronous. See GitHub issue #4084

  5. The .stream() function for queries. Mongoose 4.5.0 queries have a .cursor() function that uses Streams3 (rather than node 0.8 streams) among other powerful features. See GitHub issue #1907

  6. The various retainKeyOrder options. Mongoose will not reverse key orders in 5.0.

  7. The passRawResult option to findOneAndUpdate(), use rawResult instead. The rawResult option will return the raw write op result from the MongoDB driver, with the caveat that result.value will be a hydrated mongoose document. See GitHub issue #4925. Both rawResult and passRawResult are supported in >= 4.9.0 (passRawResult takes precedent), however, passRawResult will not work in 5.0.0.