0

findByIdAndUpdate を使用して手動で行うことに欠点はありますか。findByIdAndUpdate が私のmongo接続を切断することに気付き、接続を開いたままにして、アプリを閉じたときにのみ閉じるようにする必要があることを読みました。これは事実ですか?もしそうなら、接続を維持するfindByIdAndUpdateには表示されない構成設定がありますか?

updateItemById: function(id, updateObj, options, callback){
  //OPTION 1
      Badge.findById(id, null , function(err, doc){
    doc.update(updateObj, function(err, numberAffected, raw){
    if (err) return handleError(err);
         Badge.findById(id, null , function(err, doc){
                 callback(doc);
             });
        });
   });
  //OPTION 2
  Badge.findByIdAndUpdate(id, updateObj, options, function(err, data){
        callback(doc);
  });
 }
4

1 に答える 1

1

findByIdAndUpdate次の理由により、(ドライバーとマングースが正しくプログラムされている限り)より高速になるはずです。

オプション 1 の場合:

  • ID でオブジェクトをフェッチする
  • JavaScript オブジェクトに変換する
  • クライアントのオブジェクトを更新する
  • DBに送り返す
  • 変更を計算して保存する
  • 返却してください
  • JavaScript オブジェクトに変換

オプション 2 の場合:

  • データベースでドキュメントを検索
  • アトミック操作として変更を計算して適用する
  • オブジェクトを送り返す
  • JavaScript オブジェクトに変換

ご覧のとおり、2 番目のオプションは必要な手順が少ないため、高速です。

おまけ: コードが読みやすくなります。

于 2013-05-10T14:54:42.600 に答える