2016-07-29 10 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){ 

Кроме того, я попытался его без объекта.

Я получаю результат

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) { ... } 
Смежные вопросы