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 })