我有这个函数从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'} ....”,则该函数会返回预期的照片项目。
有人可以帮我解决这个问题吗?
谢谢!
答案 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'必须转换为字符串。
谢谢!