我在一个带有猫鼬的对象数组中插入一个对象。 我的目标是:
name: {
type: String,
unique: true,
required: true
},
translations: [{
tag: {
type: String,
unique: true,
required: true
},
meaning: {
type: String,
required: true
}
}]
我希望我的代码在"翻译"中存在对象时抛出错误使用相同的标签'值。
我目前正在这样做:
Language.update(
{name: languageName},
{$addToSet: { 'translations': {
tag: aNewTag,
meaning: aNewTranslation
}}}, {
upsert: false
}, function(err) {
if (err) console.log(err);
else console.log('This is spartaaa!!!');
}
);
答案 0 :(得分:1)
您可以检查更新回调中的WriteResult,如果没有修改则抛出错误,如下所示:
Language.update(
{
name: languageName
}, {
$addToSet: {
'translations': {
tag: aNewTag,
meaning: aNewTranslation
}}}, {
upsert: false
}, function(err, result) {
if (err) {
console.log(err);
} else if (result.nModified === 0) {
throw Error('Object is not unique, no duplicate inserted.');
} else {
console.log('This is spartaaa!!!');
}
});
有关WriteResult for updates的更多信息,请参阅mongoose documentation。