Quels parameters sont passés aux callbacks Mongoose

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èle callback(error, results) . Le résultat dépend de l’opération. Pour findOne() 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