我尝试使用以下代码将邮件标记为已知:
Template.FullMessage.onRendered(function () {
var id = FlowRouter.getParam('id');
Messages.update(id, {$set: {readed: true} });
});
收集是:
"_id": "YMxYn9NodPeZqFP83",
"whatAbout": "adsfadsfasdf",
"message": "sdfadsfadfadsfasdfasdf",
"recipientId": "9ewiF8JTNp77Pmijw",
"author": "9ewiF8JTNp77Pmijw",
"createdAt": "2016-05-09T08:37:52.282Z",
"owner": "seofilms",
"readed": false
}
我预计该列" readed":" false"将被替换为" readed":true,
但不是这样,这里的一切都在变化,包括所有者。因此,例如,如果我将用用户测试打开消息,我也将更改此消息的所有者。
为什么会这样?
是否可以阻止发送整个对象并仅使用ID更改它?
感谢您的任何想法。
答案 0 :(得分:1)
试试这个:
Messages.update({_id: id}, {$set: {readed: true} });
它应该只与id
一起使用,正如您已经在做的那样。是否还有其他代码写入同一个集合?尝试在控制台中运行它并检查它是否仍在更新所有属性。