MongoJS Node findOne ложно не возвращает результатов

Использование MongoJS: https://github.com/mafintosh/mongojs

Находит все


    db.users.find({}, function(err,users){
        if (err) throw err;
        console.log(users);
    })

Возвращает пользователя. выглядит отлично


    [{ _id: 53f2faa6aed1689e84982b8b,
        facebook: { 
            email: '[email protected]',
            name: 'Juan Atkins',
            id: '764969936' },
        __v: 0 
    }]

Когда я пытаюсь найти этого пользователя по его id: не удалось


    db.users.findOne({
        _id:  '53f2faa6aed1689e84982b8b'
    }, function(err, user) {
        if (err) throw err;
        console.log(user);
    });

returns []

Я знаю, что в БД есть данные. Я пробовал искать по другому ключу (например, по имени). Почему он не может найти данные?


person Matthew Nolan    schedule 19.08.2014    source источник


Ответы (1)


вы должны использовать ObjectId: http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html.

db.users.findOne({
    _id:  new ObjectID('53f2faa6aed1689e84982b8b')
}, function(err, user) {
    if (err) throw err;
    console.log(user);
});
person Jan Remunda    schedule 19.08.2014
comment
Хороший звонок, но я попробовал ReferenceError: ObjectID is not defined - person Matthew Nolan; 19.08.2014
comment
@MatthewNolan Затем вам нужно определить его с помощью функции из модуля драйвера: var ObjectID = require('mongodb').ObjectID; - person apsillers; 19.08.2014
comment
Я использую обертку mongojs. Они рекомендуют сделать что-то подобное, но когда я пробую, он говорит, что у него нет метода ObjectJD. db.users.findOne({ _id: mongojs.ObjectID('53f2faa6aed1689e84982b8b') }, function(err, user) { if (err) throw err; console.log(user); }); - person Matthew Nolan; 19.08.2014
comment
Хм, у этого API другой регистр букв: mongojs.ObjectId ('523209c4561c640000000001') - person Jan Remunda; 20.08.2014