我有这个服务器端方法(Meteor方法),它通过传递的ID成功找到文档,但是当我发出mongo .update()
时,我收到内部服务器错误(500)。
setToggle: function(detailId){
var checked_detail = detailsCollection.findOne({_id: detailId});
checked_detail.update({$set: {checkboxStatus: 'toggle'}});
}
这是我最初在客户端上调用方法来创建文档的地方:
'submit form': function(ev){
ev.preventDefault();
var detailFormData = {
detail: $(ev.target).find('[name = detail]').val(),
parentId: $(ev.target).find('[name = parentId]').val(),
checkboxStatus: ''
}
Meteor.call('addDetail', detailFormData);
}
这是服务器插入方法,因此您可以看到模型:
addDetail: function(detailFormData){
if(! Meteor.userId()){
throw new Meteor.Error('not-authorized');
}
detailsCollection.insert({
detail: detailFormData.detail,
parentId: detailFormData.parentId,
checkboxStatus: detailFormData.checkboxStatus
});
}
答案 0 :(得分:1)
您的更新语法错误:您正在检索Mongo文档,然后尝试在生成的纯JS对象上调用update
操作,而不是在集合本身上调用该方法。
重写你的代码:
setToggle: function(detailId){
detailsCollection.update(detailId,{
$set: {checkboxStatus: 'toggle'}
});
}
Mongo Collection更新语法有两个(强制)参数:
_id
修改文档)。