我正在尝试使用html中的表单更新我的主题集合。当我使用topics.insert()时,我可以将每个文档添加到集合中,但如果我使用更新它不起作用。我想将文档添加到集合中,只有它尚不存在。
Topics = new Mongo.Collection("Topics");
if(Meteor.isClient){
Template.body.helpers({
topic: function(){
return Topics.find({});
}
});
Template.body.events({
"submit .new-topic": function(event){
//prevent reload on submit
event.preventDefault();
//get content from form
var title = event.target.title.value;
var subtopic = event.target.subtopic.value;
var content = event.target.content.value;
var video = event.target.video.value;
Topics.update({
title: title},{
title: title,
subtopic: subtopic,
content: content,
video: video
},
{upsert: true}
);
//clear forms
event.target.title.value = "";
event.target.subtopic.value = "";
event.target.content.value="";
event.target.video.value="";
}
});
}
答案 0 :(得分:4)
您应该使用upsert
。
更新+插入的混合
Topics.upsert({
// Selector
title:title
}, {
// Modifier
$set: {
...
}
});
答案 1 :(得分:-1)
我会给你一个广泛的概述类型答案。
首先,您需要检查您的条目是否存在。
var collectionEntry = Topics.find({title:title});
如果找到,可以更新。
Topics.update({title:title},$set{ ... })
如果找不到,请插入。
Topics.insert({ ... })
使用此处的文档来了解如何更新mongo集合。 http://docs.mongodb.org/manual/reference/operator/update/set/
此外,您应该按文档ID进行更新,并且应该将其作为Meteor方法进行更新,而不是从客户端进行更新。