2014-09-22 93 views
0

所以我正在做一個貓鼬發現,我已經定義了集合等,它都工作正常除了當我試圖做一個值的查找。Mongoose nodejs發現工作不正常

var searchID = req.user.id; 
     console.log(searchID); 


     Locations.find({userid: '541f69e7fd4c3b07108c92c0'}, function(err, location) { 
    if (err) return console.error(err); 
    console.log(location); 
     }); 

userid是一個屬性,它是創建它的用戶的ID。發現不適用於mongo控制檯。

任何想法?我可以通過位置的實際_id或任何其他值來查找。

+0

如何在模式中定義「userid」。它是一個字符串還是一個ObjectId?通過mongo shell看起來如何? 'ObjectId(「541f69e7fd4c3b07108c92c0」)'也許? – 2014-09-22 03:58:57

+0

當搜索單個元素時,還可以使用'findOne',而不是'find'。 – Ravi 2014-09-22 04:18:38

回答

0

正如Neil Lunn所評論的,你的問題幾乎可以肯定你的模式不正確。一旦您的貓鼬模式明確將userid屬性定義爲mongoose.Schema.Types.ObjectId類型,則在將它發送到mongodb之前,貓鼬將開始將查詢中的字符串值轉換爲合適的ObjectId實例,因此查詢將開始匹配文檔,您將看到結果。

{userid: {type: mongoose.Schema.Types.ObjectId, ref: 'Users'}}