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