用猫鼬更新数组中的最后一项

时间:2019-03-15 01:14:36

标签: node.js mongodb mongoose

我正在尝试更新数组timeCard中的最后一项。

我的数组看起来像这样:

{
    "_id" : ObjectId("5c8acfb52ac54e4d9df50651"),
    "timeCard" : [ 
        {
            "clockIn" : "2019/3/14 17:26:33"
        }, 
        {
            "clockOut" : "2019/3/14 18:4:19"
        }, 
        {
            "clockIn" : "2019/3/14 19:11:10"
        }
    ],
    "username" : "jgdoe",
    "fname" : "John",
    "mname" : "G",
    "lname" : "Doe",
    "pnumber" : "555-555-5555",
    "role" : 1,
    "salt" : ,
    "hash" : ,
    "__v" : 0,
    "clockedin" : 1
}

我试图将timeCard数组中的最后一个对象作为目标并推送clockedOut时间戳,但是我的方法似乎不可接受。

这是我的方法:

User.findOne({username: req.user.username}, function(err, user){
  if (err) {
    console.log(err)
  } else {
    user.updateOne({clockedin:0}, function(err){
      if (err) {
        console.log(err)
      }
    })
    user.timeCard.slice(-1)[0].updateOne({clockOut: timestamp}, function(err){
      if (err) {
        console.log(err)
      } else {
        res.redirect("/")
      }
    })

  }

});

这给出了:

TypeError: user.timeCard.slice(...)[0].updateOne is not a function

如果有人可以指出正确的方向,我将不胜感激。这让我难过了几个小时。

0 个答案:

没有答案