Mongoose 模式:如何设置数组中的最大项目数?

Posted

技术标签:

【中文标题】Mongoose 模式:如何设置数组中的最大项目数?【英文标题】:Mongoose schema: how to set max number of items in an array? 【发布时间】:2020-07-25 06:59:56 【问题描述】:

我有一个猫鼬模式,它包含一个对象数组和一个字符串数组。在这两种情况下,如何设置验证器以限制可以插入的项目数为 10?

    todoList: [ type: String ],
    pictures: [ type: String ],

【问题讨论】:

【参考方案1】:

数组没有默认的maxlength 选项。

解决方法1:您可以这样定义custom validator:

todoList: [ 
    type: String,
    validate: 
      validator: function(v,x,z) 
          return !(this.todoList.length > 10);  
      , 
      message: props => `$props.value exceeds maximum array size (10)!`
    ,
    required: true
]

解决方法2:您可以这样定义pre hook:

schema.pre('validate', function(next) 
    if (this.todoList.length > 10) throw("todoList exceeds maximum array size (10)!");
    next();
);

【讨论】:

以上是关于Mongoose 模式:如何设置数组中的最大项目数?的主要内容,如果未能解决你的问题,请参考以下文章

如何查询 mongoose 中数组长度最大的条目?

将项目添加到 Mongoose 中的多维对象数组

将项目添加到 Mongoose 中的多维对象数组

如何使用 'type' 在 mongoose 中使用嵌套模式来创建数组?

如何在不选择模式配置参数的情况下使用 mongoose 在 MongoDB 模式实例化中的关联数组/对象中执行 foreach?

如何在 mongoose 中使用 update many 来循环遍历 8 个元素并将它们放入该模式中的数组中