nodejs findone findbyid example collection javascript node.js mongodb mongoose nosql

javascript - findone - mongoose npm



MongoDB mongoose collection.find options Advertencia de desaprobación (4)

Al consultar los documentos mediante el uso de collection.find comencé a recibir la siguiente advertencia en mi consola

La opción DeprecationWarning: collection.find [fields] está en desuso y se eliminará en una versión posterior

¿Por qué veo esto y cómo lo arreglo? (Posibles alternativas)

EDITAR: Consulta agregada

Session .find({ sessionCode: ''18JANMON'', completed: false }) .limit(10) .sort({time: 1}) .select({time: 1, sessionCode: 1});

Mangosta versión 5.2.9


Después de actualizar a la versión 5.2.10. Cualquiera de las siguientes opciones puede ser utilizada

const mongoose = require(''mongoose''); mongoose.connect(''mongodb://localhost/test'', { useCreateIndex: true, useNewUrlParser: true }) .then(() => console.log(''connecting to database successful'')) .catch(err => console.error(''could not connect to mongo DB'', err));

const mongoose = require (''mongoose''); mongoose.set (''useCreateIndex'', true) mongoose.connect (''mongodb: // localhost / test'', {useNewUrlParser: true}) .then (() => console.log (''conectándose a la base de datos con éxito'')). catch (err => console.error (''no se pudo conectar a mongo DB'', err));


Puede hacer una npm install [email protected] y esto lo ayudará a volver a una versión anterior que no mostrará ninguna advertencia de desaprobación


Actualizar:

5.2.10 está disponible y se puede descargar here .

Use mongoose.set(''useCreateIndex'', true); para que mongooose llame al método createIndex en el controlador nativo mongodb.

Para obtener más información sobre los documentos, puede ver la página https://mongoosejs.com/docs/deprecations

Para obtener más información sobre el problema y su corrección github

Respuesta original:

La versión de Mongoose 5.2.9 actualizó el controlador mongodb nativo a 3.1.3 en el que se agregaron cambios para lanzar mensajes de advertencia cuando se llama al método del controlador nativo en desuso.

fields opción de fields está en desuso y se reemplaza con la opción de projection .

Tendrá que esperar a que Mongoose realice cambios al final para reemplazar la opción de campos con proyección. La corrección está programada para la versión 5.2.10.

Por el momento, puede volver a 5.2.8, lo que suprimirá todas las advertencias de desaprobación.

npm install [email protected]

Para todas las demás advertencias en desuso, debe acercarse a ellas caso por caso.

Verá otras advertencias de desaprobación cuando utilice otros métodos de recopilación.

DeprecationWarning: collection.findAndModify is deprecated. Use findOneAndUpdate, findOneAndReplace or findOneAndDelete instead. DeprecationWarning: collection.remove is deprecated. Use deleteOne, deleteMany, or bulkWrite instead. DeprecationWarning: collection.update is deprecated. Use updateOne, updateMany, or bulkWrite instead. DeprecationWarning: collection.save is deprecated. Use insertOne, insertMany, updateOne, or updateMany instead. DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.

Todos los métodos de escritura findOne* mongoose usan el método findAndModify que está en desuso en el controlador nativo mongodb.

Use mongoose.set(''useFindAndModify'', false); para que mongooose llame al método findOne* apropiado en el controlador nativo mongodb.

Para remove y update reemplace esas llamadas con los métodos delete* y update* respectivamente.

Para save reemplace esas llamadas con los métodos de insert* / update* respectivamente.


mongoose.connect(''your db url'', { useCreateIndex: true, useNewUrlParser: true })

o

mongoose.set(''useCreateIndex'', true) mongoose.connect(''your db url'', { useNewUrlParser: true })