2016-07-29 131 views
0

我發現一個沒有返回結果。我嘗試了幾個不同的東西,但它似乎沒有返回正確的結果。至少,我沒有收到任何迴應。findOne不適用於貓鼬

我已經試過這一點:

var ObjectId = require('mongoose').Types.ObjectId; 

m_Kbase_data.findOne({_id : new Object(req.params.m_id)}, function(err, kbase_data){ 

而且,我已經嘗試過了沒有物體。

我得到的

kbase_data.length === 0 

的結果。然而,當我運行此:

m_Kbase_data.find({_id : req.params.m_id}, function(err, kbase_data){ 

我找到了一個和唯一正確的文件。我只是覺得這很奇怪。

想法?

回答

3

這可能會幫助你: -

var ObjectID = require('mongodb').ObjectID; 
var ObjectId = require('mongoose').Types.ObjectId; //For mongoose 

m_Kbase_data.findOne({_id : new ObjectID(req.params.m_id)}, function(err, kbase_data){}); 

希望這會幫助你。

1

對象ID實際上是一個字符串,所以代碼

{_id : req.params.m_id} 

是正確的。試圖用一個對象

{_id : new Object(req.params.m_id)} 

做這將是一樣

{_id : {"0":req.params.m_id}} 

和_id顯然不包含任何對象

0

使用的ObjectId,而不是對象查詢

var ObjectId = require('mongoose').Types.ObjectId; 

m_Kbase_data.findOne({_id : new ObjectId(req.params.m_id)}, function(err, kbase_data){ 
0

無需字符串轉換爲的ObjectId貓鼬已經不適合您,只是做

m_Kbase_data.findOne({_id: req.params.m_id}, function(err, kbase_data) { ... } 

或使用findById()簽名

m_Kbase_data.findById(req.params.m_id, function(err, kbase_data) { ... }