我正在尝试更新数组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
如果有人可以指出正确的方向,我将不胜感激。这让我难过了几个小时。