Express中使用Passport的ID不匹配

时间:2013-06-24 22:19:12

标签: node.js express

所以我有一点问题,也只是进入Node所以要温柔!

我有以下(使用Passport):

User.findOne({}, '_id username interests', {
    _id: req.user._id
}, function(err, user) {
    if (err) return;
    console.log(req.user._id);
    console.log(user._id);
    res.json(user);
});

然而,两个console.log产生不同的ID!我不知道为什么??这怎么可能?

就像我说的,我是Node的新手,所以我有点挣扎......

1 个答案:

答案 0 :(得分:0)

findOne需要作为第一个参数传递查询。在你的例子中,你传递的是一个空参数,这意味着“从数据库中给我一些随机用户”。

试试这个:

User.findOne({ _id: req.user._id }, '_id username interests', function(err, user) {
  // in case of errors, send back a response too!
  if (err)
    return res.send(500);
  ...
});

FWIW:既然看起来你正在使用Mongoose,那么对于这样的情况也会findById