2017-01-19 8 views
0

Я пытаюсь найти запись по идентификатору, но он не получает сделаноНе удалось найти запись по идентификатору в мангуста

var id = req.param('id'); 
var item = { 
    '_id': id 
} 
videos.find(item, function(error, response) {}); 

У меня есть дать действительный идентификатор, но все же это не выборка, кто может предложить помощь, пожалуйста ,

+1

Вы должны использовать [ 'findById'] (http://mongoosejs.com/docs/api. html # model_Model.findById). – str

ответ

1

Существует обратный вызов, предоставляемый find(), но в вашем коде выше он не имеет исполняемых операторов. Вместо этого:

videos.find(item, function(error, response) {}); 

... сделать что-то вроде этого:

videos.find(item, function(error, response) { 
    if (error) { 
    console.log(error); // replace with real error handling 
    return; 
    } 
    console.log(response); // replace with real data handling 
}); 
1

Вы должны использовать функции обратного вызова для обработки ошибок. И find() возвращает массив. Если вам нужно найти пользователя по уникальному ключу (в данном случае _id) вы должны использовать findOne()

router.get('/GetVideoByID/:id',function(req,res){ 
    var id = req.params.id; 
    var video = { 
     '_id' : id 
    } 
    videos.findOne(video,function(err,data){ 
     if(err){ 
      console.log(err); 
     }else{ 
      console.log("Video found"); 
      res.json(data); 
     } 
    }); 
}); 
+0

При использовании модуля mongoose они предлагают использовать findById(), а не findOne(). Вы можете посмотреть документацию http://mongoosejs.com/docs/api.html#model_Model.findById –

+0

Спасибо, что исправили меня @LukeKroon. Но я хочу знать, почему использовать findById(), а не findOne()? Существует ли разница между временем выполнения этих запросов? –

+0

В соответствии с документацией findbyId() запускает крюки findOne(), за исключением того, как он обрабатывает неопределенные, т. Е. FindOne (undefined) возвращает произвольный документ, а findById (undefined) преобразуется в findOne ({_ id: null}), который ничего не возвращает. Его безупречный внешний вид. :) –