使用METEOR@1.1.0.2并在服务器端执行upsert
会给我带来麻烦。它要么抱怨插入或更新的语法错误,要么我只是做错了?
下面的代码适用于插入但更新时抛出:
错误:更新参数不能包含修饰符和非修饰符字段。
Mail.upsert({ ma_user_id: userId }, {
ma_user_id: userId,
ma_address: userEmail,
ma_verified: false
}, function (e, r) {
console.log(e, r);
});
以下代码适用于更新,但会在插入时抛出此错误: MongoError:
美元($)前缀字段' $存在'已删除。$ exists'对存储无效。
Mail.upsert({ ma_user_id: userId }, { $set: {
ma_user_id: userId,
ma_address: userEmail,
ma_verified: false
}
}, function (e, r) {
console.log(e, r);
});
我也试过这个,这给了我更新时的错误:
错误:更新参数不能包含修饰符和非修饰符字段。
Mail.update({ ma_user_id: userId }, {
ma_user_id: userId,
ma_address: userEmail,
ma_verified: false
}, {
upsert: true
}, function (e, r) {
console.log(e, r);
});
答案 0 :(得分:0)
错误消息基本上表示您不能在选择器和修改器中使用相同的字段。所以你必须从修饰符中删除ma_user_id
,如下所示:
Mail.upsert({ ma_user_id: userId }, {
ma_address: userEmail,
ma_verified: false
}, function (e, r) {
console.log(e, r);
});