我的数据如下:
{
"profileID": "123",
"fullname": "Name",
"notifications": [
{
"read": false,
"date": "2017-05-06 13:40:01",
"post": "5555555",
"action": "commented",
"profileID": "456"
},
{
"read": false,
"date": "2017-05-06 13:40:15",
"post": "5555555",
"action": "commented",
"profileID": "456"
}
]}
我正在尝试创建一个Node API路由,以便能够更新每个通知。对于唯一性,可以使用日期变量。
总结一下:
我已按以下方式构建它:
apiRouter.post('/api/changeNotificationStatus', function(req, res){
userModel.update(
{profileID: req.body. profileID, "notifications.date": req.body.date, "notifications.post": req.body.post, "notifications.action": req.body.action},
{$set:{"notifications.$.read": true}},
{multi: false},
function(err, data) {
if (err){
console.log(err);
} else {
console.log(data);
}
});
});
没有任何错误,但我得到以下内容:
{ n: 0, nModified: 0, ok: 1 }
我已经确认变量:req.body.profileID,req.body.date,req.body.date,req.body.post和req.body.action正好通过。
我做错了吗?
PS:感谢Neil Lunn指点我的model.update帖子!
答案 0 :(得分:0)
只是为了帮助遇到这种情况的人,有很多问题:
1)userModel的架构是错误的,因为它应该是:
notifications: [{
read: Boolean,
date: Date,
post: String,
action: String,
profileID: String
}]
而不是:
notifications: [{ }]
2)在userModel.update命令中,我应该完成:
new Date(req.body.date)
而不是:
req.body.date
希望这有助于将来。