节点Js(返回null)

时间:2013-09-07 23:43:35

标签: node.js mongodb callback null

我有这个函数从mongo db中检索特定用户:

exports.findById = function(req, res){
    var id = req.params.id;
    db.collection('Users', function(err, collection){
        collection.findOne({'_id':new BSON.ObjectID(id)}, function(err, item){
        findPhotoByUserId(item._id, function(photo){
            console.log('photo: ' + photo);
         });            
    });
});
};

另一个是获取用户的照片,并将用户的ID传递给它:

var findPhotoByUserId= function(userId, cb){
    db.collection('Photos', function(err, collection){
        collection.findOne({'userId': userId}, function(err, item){
            if(!err)
                cb(item);
        });
    });
};

问题:当我调用函数“findById”时,照片项为空。但是,如果我将显式用户ID放在“collection.findOne({'userId':'522bae4a3ee1be8005000001'} ....”,则该函数会返回预期的照片项目。

有人可以帮我解决这个问题吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我通过在'mongodb'库中使用ObjectID获得了我的代码:

var ObjectID = require("mongodb").ObjectID;
//more code here
query._id = { $gt: ObjectID(myId) }

答案 1 :(得分:0)

好吧,我解决了我的问题!

在此功能:

var findPhotoByUserId= function(userId, cb){
    db.collection('Photos', function(err, collection){
        collection.findOne({'userId': userId.toString()}, function(err, item){
            if(!err)
                cb(item);
        });
    });
};

'userId'必须转换为字符串。

谢谢!