gpt4 book ai didi

javascript - 插入/更新子元素或在集合中插入完整文档 - 取决于现有的主元素

转载 作者:行者123 更新时间:2023-12-03 08:52:04 27 4
gpt4 key购买 nike

如果我从表单发送数据,我首先检查集合中是否已存在具有该标题的文档。如果不是这种情况,则应插入数据。否则,只有一部分数据会被插入 - 如果它本身不存在,因为我想避免重复。

这就是我的做法:

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]
});
}

但是我有两个问题:

  1. 有更明智的方法吗?现在我必须在插入/更新之前先执行 find().count() 操作。
  2. 我的代码无法工作,因为我收到错误 Uncaught Error :不允许。不受信任的代码只能通过 ID 更新文档。 [403]

更新

这会是一样的吗?

Collection.update(
{ journal: journal },
{
$addToSet: { article: article },
$set: { journal: journal, article: article }
},
{ upsert: true }
);

最佳答案

只需在服务器上创建一个像这样的方法

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;
}
});

关于javascript - 插入/更新子元素或在集合中插入完整文档 - 取决于现有的主元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32639425/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com