Dans la documentation findOneAndUpdate
, il répertorie fréquemment un rappel facultatif pour certains opérateurs de requête (comme findOneAndUpdate
), cependant, il ne mentionne pas les parameters (arguments) pris en compte par le rappel. Que sont-ils et comment pourrais-je le savoir?
De plus, si les conditions
, la update
etc. sont facultatives et que je souhaite spécifier un rappel à la fin, dois-je transmettre la valeur null
ou des objects vides ou puis-je spécifier simplement le rappel – et que Mongoose sait-il?
Model.findOneAndUpdate([conditions], [update], [options], [callback])
Pour presque toutes les requêtes callback
fonction de callback
fournie sera appelée avec deux arguments dans le modèle de callback(err, results)
rappel du noeud callback(err, results)
comme indiqué dans la documentation:
Chaque fois qu’un rappel est transmis à une requête dans Mongoose, le rappel suit le
callback(error, results)
du modèlecallback(error, results)
. Le résultat dépend de l’opération. PourfindOne()
il s’agit d’un document unique potentiellement nul ,find()
liste de documents ,count()
le nombre de documents ,update()
le nombre de documents affectés , etc. L’ API La documentation pour les modèles fournit plus de détails sur ce qui est transmis aux rappels.
Par défaut, vous pouvez obtenir deux parameters dans la fonction de rappel: err
et results
. Le premier contient les erreurs survenues pendant l’exécution et le second a l’ancienne valeur de document. Toutefois, vous pouvez obtenir d’autres variables dans les parameters de rappel si vous définissez des options dans la méthode findOneAndUpdate
. Voyons cela avec un exemple:
Model.findOneAndUpdate( { id: id_var }, { $set: { name: name_var } }, {new: true, passRawResult: true}, (err, doc, raw) => { /*Do something here*/ })
Dans ce cas, l’option new: true
indique que la variable doc contient le nouvel object mis à jour. L’option passRawResult: true
indique que vous pouvez obtenir le résultat brut du pilote MongoDB en tant que troisième paramètre de rappel. Le paramètre raw contient le résultat de la mise à jour, à peu près comme ceci:
"raw": { "lastErrorObject": { "updatedExisting": true, "n": 1 }, "value": { /*the result object goes here*/}, "ok": 1, "_kareemIgnore": true }
Selon la documentation officielle sur les mongooses, vous pouvez appeler findOneAndUpdate comme ceci
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
Donc, vous pouvez simplement passer votre rappel, pas besoin de passer à null pour les autres parameters
http://mongoosejs.com/docs/api.html#query_Query-findOneAndUpdate