如果我从表单发送数据,我首先检查集合中是否已存在具有标题的文档。 如果不是这种情况,则应插入数据。 否则,只会插入一部分数据 - 如果它不存在,我希望避免重复。
所以我就是这样做的:
var journal = list[0].value,
article = {
author: list[1].value,
pageNumbers: list[2].value,
reference: id
}
if (Collection.find({journal: journal}).count()) {
Collection.update(
{ journal: journal },
{ $addToSet: {
article: article
}
});
}
else {
Collection.insert({
journal: journal,
article: [article]
});
}
但是我有两个问题:
Uncaught Error: Not permitted. Untrusted code may only update documents by ID. [403]
更新
这会是一样的吗?
Collection.update(
{ journal: journal },
{
$addToSet: { article: article },
$set: { journal: journal, article: article }
},
{ upsert: true }
);
答案 0 :(得分:1)
只需像这样在服务器上创建一个方法
Meteor.methods({
'saveToCollection': function(collection, journal, article){
if (global[collection].find({journal: journal}).count()) {
global[collection].update(
{ journal: journal },
{
$addToSet: { article: article }
}
);
}
else {
global[collection].insert({
journal: journal,
article: [article]
});
}
return true;
}
});