2013-05-10 59 views
0

是否有使用findByIdAndUpdate並手動執行的缺點。我注意到findByIdAndUpdate會刪除我的mongo連接,並且讀取你應該嘗試保持連接打開,只有當你關閉你的應用程序時關閉。是這樣的,如果是這樣,是否有一個配置設置,我沒有看到findByIdAndUpdate,保持連接?Node.js和MongoDB使用Mongoose。使用findByIdAndUpdate vs手冊

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

回答

1

findByIdAndUpdate應該更快(只要駕駛員和貓鼬被正確編程的),這是因爲:

隨着選項1:

  • 由ID抓取對象
  • 變換它到JavaScript對象中
  • 客戶端中的更新對象
  • 發送回DB
  • 計算並保存更改
  • 發回
  • 轉變成JavaScript對象

選項2:在數據庫

  • 計算

    • 查找文件和應用變化的原子操作
    • 發送對象返回
    • 轉換成JavaScript對象

    正如您所看到的,第二個選項確實需要更少的步驟,因此應該更快。

    獎勵:代碼更具可讀性。

  • +0

    我選擇了選項2.無論出於何種原因,我認爲我的連接正在關閉,但似乎並非如此。感謝您的意見。 – abritez 2013-05-10 15:35:23

    相關問題