web-dev-qa-db-fra.com

Comment fonctionne le rappel de sauvegarde de Mongoose?

Pour la pile MEAN, j'apprends la fonction save () de Mongoose, qui prend un rappel. Son états de l'API :

Model#save([options], [fn])

Saves this document.

Parameters:

[options] <Object> options set `options.safe` to override [schema's safe option](http://mongoosejs.com//docs/guide.html#safe)
[fn] <Function> optional callback

Comment savoir quels arguments se trouvent dans le rappel facultatif? L'API donne simplement un exemple:

product.sold = Date.now();
product.save(function (err, product, numAffected) {
  if (err) ..
})
The callback will receive three parameters

err if an error occurred
product which is the saved product
numAffected will be 1 when the document was successfully persisted to MongoDB, otherwise 0.

Ce que je pense que l'API devrait dire à propos du rappel facultatif est le suivant:

[fn] <Function> optional callback with this structure:

     function(err, theDocumentToBeSaved, [isSaveSuccessful])

et il peut être utilisé comme suit. Notez que le deuxième argument, le document, doit être le même document qui appelle la sauvegarde. (Faites-moi savoir si ce n'est pas le cas.)

documentFoo.save(function(err, documentFoo, [isSaveSuccessful]){
    if(err){ return next(err); }

    if (isSaveSuccessful === 1){

        // documentFoo has been saved correctly 
        // do stuff with the saved documentFoo
    }
}

Si mon interprétation est correcte, est-ce ainsi que les paramètres de rappel de sauvegarde doivent toujours être structurés?

13
Melissa

Le rappel de la fonction save acceptera trois arguments:

  • L'erreur
  • Le document qui a été enregistré
  • Le nombre de lignes affectées

Les arguments sont listés ici

Notez que le deuxième argument, le document, doit être le même document qui appelle la sauvegarde

Vous pouvez nommer les arguments comme vous le souhaitez, vous ne les transformez pas en un objet ou quelque chose comme ça. C'est simplement un nom que vous souhaitez utiliser pour vous y référer dans le corps de votre fonction.

27
Drown