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

时间:2014-03-02 22:31:05

标签: arrays node.js mongodb object 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!!!');
    }
);

1 个答案:

答案 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