用mongoose在一个对象数组中插入一个唯一的对象

我用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!!!'); } ); 

您可以检查更新callback中的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文档中find。