我正在使用 Mongoose 将一个对象插入到对象数组中。 我的对象是这样的:
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!!!');
}
);
最佳答案
您可以在更新回调中检查 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 的更多信息可以在 mongoose documentation 中找到。 .
关于arrays - 使用 mongoose 在对象数组中插入唯一的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22134539/