[英]Meteor.js update only one parameter instead of whole collection
我正在尝试使用以下代码将消息标记为已读:
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 更改它?
谢谢你的任何想法。
尝试这个:
Messages.update({_id: id}, {$set: {readed: true} });
正如您已经在做的那样,它也应该只适用于id
。 是否有其他代码写入同一个集合? 尝试在控制台中运行它并检查它是否仍在更新所有属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.