node.js - servidor - node js ya
¿Qué parámetros se pasan a las devoluciones de llamada de Mangosta? (3)
En la documentación de mangostas con frecuencia se enumera una devolución de llamada opcional para ciertos operadores de consulta (como findOneAndUpdate
), sin embargo, no menciona qué parámetros (argumentos) toma la devolución de llamada. ¿Qué son, y cómo lo descubriría?
Además, si las conditions
, la update
, etc. son opcionales, y quiero especificar una devolución de llamada al final, ¿tengo que pasar el valor null
, o vaciar los objetos o puedo simplemente especificar la devolución de llamada, y la manguera lo sabe Mongoose?
Model.findOneAndUpdate([conditions], [update], [options], [callback])
De acuerdo con la documentación oficial de la mangosta, puedes llamar a findOneAndUpdate como este
query.findOneAndUpdate(conditions, update, options, callback) // executes
query.findOneAndUpdate(conditions, update, options) // returns Query
query.findOneAndUpdate(conditions, update, callback) // executes
query.findOneAndUpdate(conditions, update) // returns Query
query.findOneAndUpdate(update, callback) // returns Query
query.findOneAndUpdate(update) // returns Query
query.findOneAndUpdate(callback) // executes
query.findOneAndUpdate() // returns Query
Entonces puede pasar su devolución de llamada, no es necesario pasar nulo para otros parámetros
http://mongoosejs.com/docs/api.html#query_Query-findOneAndUpdate
Para casi todas las consultas de mangostas , se llamará a la función de callback
llamada con dos argumentos en la devolución de llamada del patrón de callback(err, results)
llamada del nodo callback(err, results)
como se indica en la documentación:
Cuando se pasa una devolución de llamada a una consulta en Mongoose, la devolución de llamada sigue la
callback(error, results)
llamada del patróncallback(error, results)
. Los resultados dependen de la operación: parafindOne()
es un documento único potencialmente nulo ,find()
una lista de documentos ,count()
el número de documentos ,update()
el número de documentos afectados , etc. La API documentos para Modelos proporcionan más detalles sobre lo que se pasa a las devoluciones de llamada.
Por defecto, puede obtener dos parámetros en la función de devolución de llamada: err
y results
. El primero contiene los errores que ocurrieron durante el tiempo de ejecución y el segundo tiene el valor anterior del documento. Sin embargo, puede obtener otras variables en los parámetros de devolución de llamada si establece algunas opciones en el método findOneAndUpdate
. Veamos esto con un ejemplo:
Model.findOneAndUpdate(
{ id: id_var },
{ $set: { name: name_var } },
{new: true, passRawResult: true},
(err, doc, raw) => { /*Do something here*/ })
En este caso, la new: true
opción new: true
indica que la variable doc contiene el nuevo objeto actualizado. La opción passRawResult: true
indica que puede obtener el resultado bruto del controlador MongoDB como el tercer parámetro de devolución de llamada. El parámetro raw contiene el resultado de la actualización, algo como esto:
"raw": {
"lastErrorObject": {
"updatedExisting": true,
"n": 1
},
"value": { /*the result object goes here*/},
"ok": 1,
"_kareemIgnore": true
}