使用以下架构:
var postSchema = new Schema({
id: { type: String, default: '' },
owner: { type: String, default: null },
votes: [{ owner: Number, vote: Number }],
});
如果具有votes
的元素不存在,我想将元素推送到owner
数组。如果是,我想更新该元素。
我目前的代码:
Post.findByIdAndUpdate(
req.params.post_id,
{ $push: { votes: { owner: owner, vote: vote }}},
{ safe: true, upsert: true },
function(err) {
if (err) {
res.send(err);
console.log(err);
}
}
);
然而,这将无休止地插入新元素。是否可以通过一个请求执行此操作,或者我是否必须依赖多个请求和if-thens?