Запросить данные с помощью функции NodeJS#find() из MongoDB

Я пытаюсь получить данные из MongoDB с помощью Node. Вот мой код:

var MongoClient = require('mongodb').MongoClient;
var ObjectId = require('mongodb').ObjectId;
var url = 'mongodb://localhost:27017/test';

module.exports.get = function (req, res) { 
    //console.log(req.params.id)
    //prints 1
    var query = {};
    query['id'] = req.params.id;
    MongoClient.connect(url, function (err, db) {
        db.collection('events')
            .find(query)
            .limit(1)
            .next( function (err, event) {
                if (err) {
                    res.status(500).send('Could not bring the resource requested!');
                }
                if (event) {
                    res.setHeader('Content-Type', 'application/json');
                    res.send(event);
                }
                else {
                    res.status(404).send('Can\'t find the resource you\'re looking for');
                }
                // db.close();
            });
    })
}

В моей базе данных есть документ с собственным полем id, отличным от _id.

Проблема с этой строкой кода: query['id'] = req.params.id; Используя это, я получаю event = null.

Но когда я изменяю это на: query['id'] = 1;, я получаю данные, которые ищу. Я не знаю, где проблема.


person Alex Chihaia    schedule 11.09.2016    source источник
comment
@Alex удалось решить проблему. Я должен использовать Number(req.params.id), потому что req.params.id — это строка.   -  person Alex Chihaia    schedule 11.09.2016
comment
Большой! Вы можете добавить ответ самостоятельно, а затем принять его!   -  person alexbt    schedule 11.09.2016


Ответы (1)


Удалось решить проблему. Я получил это из-за req.params.id, который является строкой.

Я использовал Number(req.params.id), и он работает.

person Alex Chihaia    schedule 12.09.2016