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

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

最佳答案

您可以在更新回调中检查 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/

相关文章:

php - 为 foreach 循环中缺失的项目创建零值

c++从重复数组创建子数组

c# - 将项目添加到 string[] 数组

c# - 用于创建新计算字段的 Mongodb C# 驱动程序方法

c# - 将项目添加到 C# 数组的最佳方法是什么?

Node.js:connect.static/express.static 还是 'standard' 网络服务器?

javascript - vs code IntelliSense 不适用于 webpack 包

javascript - 来自reactjs-popup的弹出窗口的自定义样式

javascript - Node/ Mongoose 错误: ValidationError

c# - MongoDB C# 驱动程序 - 更改继承类的 Id 序列化