web-dev-qa-db-ja.com

Mongooseの保存コールバックはどのように機能しますか?

MEANスタックについては、コールバックを受け取るMongooseのsave()関数について学習しています。その 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

オプションのコールバックに含まれている引数を知るにはどうすればよいですか? APIは単に例を示します。

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.

APIがオプションのコールバックについて言うべきことは次のとおりです:

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

     function(err, theDocumentToBeSaved, [isSaveSuccessful])

次のように使用できます。 2番目の引数であるドキュメントは、保存を呼び出しているドキュメントと同じでなければならないことに注意してください。(そうでない場合は教えてください。)

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

私の解釈が正しい場合、保存コールバックパラメーターは常にどのように構造化されるべきですか?

13
Melissa

save関数のコールバックは、3つの引数を受け入れます。

  • エラー
  • 保存されたドキュメント
  • 影響を受ける行の数

引数がリストされています here

2番目の引数であるドキュメントは、保存を呼び出すドキュメントと同じでなければならないことに注意してください。

引数は好きなように指定できますが、オブジェクトやそのようなものにはキャストしません。関数の本体で参照するために使用する名前です。

27
Drown