2016-07-29 9 views
0

私の検索結果が返されません。私はいくつかのことを試しましたが、正しい結果を返すようには見えません。少なくとも、私は応答を得ない。findOneがmongooseと連携していません

私はこれを試してみました:

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

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

はまた、私は、オブジェクトなしでそれを試してみました。

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

は、私が唯一の正しい文書を見つける:私はこれを実行すると

私は、しかし

kbase_data.length === 0 

の結果を取得しています。私はちょうどそれが変だと思う。

思考?

答えて

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

すでにあなたのためだけ

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

を行うかというfindById()を使用しないマングースなどのObjectIdに文字列をキャストする必要はありません署名

m_Kbase_data.findById(req.params.m_id, function(err, kbase_data) { ... } 
関連する問題