TypeError:foundUser.lastLogin.update不是函数

时间:2018-05-01 21:12:02

标签: node.js mongodb mongoose

每次用户登录时,我都会尝试在我的mongoose用户架构中更新上次登录的字段。

在用户模式中,我有这个,所以在创建用户时,最后一次登录是创建的日期:

lastLogin: {
   type: Date,
   default: Date.now
}

在我的路线中,我有这个,我试图将lastLogin更新到用户登录的时间,但它要么回来,那么更新不是功能,要么根本不工作:

User.findById(req.user._id, function(err, foundUser) {
    if (err) {
      console.log(err);
    } else {
      console.log("Found user last login is ");
      console.log(foundUser.lastLogin)

      foundUser.lastLogin.update({$set: {'lastLogin': Date.now()}});

      console.log("new last login is")
      console.log(foundUser.lastLogin)
    }
  });

1 个答案:

答案 0 :(得分:0)

这就是你这样做的方式

foundUser.update({$set: {'lastLogin': Date.now()}}, function(err,user){
  console.log("new last login is")
  console.log(user.lastLogin)

});

你所做的是update上的lastLogin,它没有任何update方法,因为它是属性而不是文档。

或者你只需​​findByIdAndUpdatemongoose版本4+就可以完成所有这些

User.findByIdAndUpdate(req.user._id, { $set: { lastLogin: Date.now() }}, {new: true}, function(err,user){
  console.log("new last login is")
  console.log(user.lastLogin)

})

new: bool - 如果返回修改后的文档而不是原始文档,则为true。默认为false