2014-12-22 43 views
0

目標:簡單的查詢和Node.js的工作不

查找其_id從MongoDB的一個文件。

環境:

的JavaScript,Node.js的,貓鼬

所以我有這樣的代碼...(這裏的 「郵報」 架構的一部分)

PostSchema.statics = { 
    findById: function (id, cb) { 
     this.findOne({ _id : { $eq: mongoose.Types.ObjectId(id) } }).exec(cb); 
    } 
} 

然後這個其他代碼調用此方法:

var Post = mongoose.model('Post'); 
Post.findById('54986a8b43db661a0ec827e4', function(result){ 
    console.log(result); 
}); 

我得到的錯誤:無法使用$均衡器的ObjectId

我試着查詢db.posts.find({_ ID:{$ EQ:物件( '54986a8b43db661a0ec827e4')}});直接在mongodb引擎,它的工作原理,但不是在貓鼬...

所以我不知道如何查詢只是由一個ID!

回答

1

它不工作,因爲$eq是一個聚合運算符。只需使用而不是一個直接的比較:

PostSchema.statics = { 
    findById: function (id, cb) { 
     this.findOne({ _id : id }).exec(cb); 
    } 
} 

你不需要作出的ObjectId出id貓鼬會做鑄造你。

但是您甚至不需要自己創建此方法,因爲內置的findById方法執行相同的操作。

+0

返回空...... :( – R01010010

+0

@Rimbuaj回調函數的第一個參數是error參數,第二個參數是找到的文檔,所以'null'只是表明沒有錯誤 – JohnnyHK

+0

哇,謝謝你:對不起,這是真的 – R01010010