2017-01-19 96 views
0

我想通過ID查找記錄,但它沒有得到做無法通過ID在貓鼬

var id = req.param('id'); 
var item = { 
    '_id': id 
} 
videos.find(item, function(error, response) {}); 

我給出一個有效的身份證件,但仍是不獲取查找記錄,任何人都可以提出幫助,請。

+1

您應該使用['findById'(http://mongoosejs.com/docs/api。 html#model_Model.findById)。 – str

回答

1

有一個提供給find()的回調,但在上面的代碼中,它沒有可執行語句。取而代之的是:

videos.find(item, function(error, response) {}); 

...做這樣的事情:

videos.find(item, function(error, response) { 
    if (error) { 
    console.log(error); // replace with real error handling 
    return; 
    } 
    console.log(response); // replace with real data handling 
}); 
1

你必須使用回調錯誤處理。和find()返回數組。如果你需要找到唯一的密鑰(在這種情況下_id)用戶必須使用findOne()

router.get('/GetVideoByID/:id',function(req,res){ 
    var id = req.params.id; 
    var video = { 
     '_id' : id 
    } 
    videos.findOne(video,function(err,data){ 
     if(err){ 
      console.log(err); 
     }else{ 
      console.log("Video found"); 
      res.json(data); 
     } 
    }); 
}); 
+0

當使用貓鼬模塊時,他們建議使用findById()而不是findOne()。你可以看看文檔http://mongoosejs.com/docs/api.html#model_Model.findById –

+0

謝謝你糾正我@LukeKroon。但我想知道爲什麼要使用findById()而不是findOne()?這些查詢的執行時間有差異嗎? –

+0

根據文檔findbyId()觸發findOne()掛鉤,除了它如何處理未定義,即findOne(undefined)返回一個任意文檔,findById(undefined)轉換爲不返回任何內容的findOne({_ id:null})。它的外觀非常安全。 :) –