乐闻世界logo
搜索文章和话题

How to set limit for array size in Mongoose schema

4 个月前提问
3 个月前修改
浏览次数43

1个答案

1

在Mongoose中,您可以通过在Schema定义中使用minmax验证器来设置数组大小的限制。这些验证器不仅可以用于数字类型的最小值和最大值验证,而且也可以用于对数组的长度进行验证。

这里有一个示例,展示了如何在一个Mongoose schema里为一个数组字段设置最小和最大长度限制:

javascript
const mongoose = require('mongoose'); const mySchema = new mongoose.Schema({ // 定义一个字符串数组,并设置长度限制 tags: { type: [String], // 最小长度限制 validate: { validator: function(v) { return v.length >= 2; // 最少需要2个元素 }, message: props => `至少需要 ${props.value.length} 个标签。` }, // 最大长度限制 validate: { validator: function(v) { return v.length <= 5; // 最多5个元素 }, message: props => `最多只能有 ${props.value.length} 个标签。` } } }); const MyModel = mongoose.model('MyModel', mySchema);

在这个例子中,字段tags是一个字符串数组。数组的最小长度被设置为2,最大长度被设置为5。这是通过在schema字段定义的validate属性中添加自定义验证函数来实现的。如果插入或更新的文档中的tags数组不符合长度限制,Mongoose将会提供相应的错误消息。

当然,除了使用自定义验证函数外,您也可以使用Mongoose提供的内置minlengthmaxlength验证器来实现类似的功能:

javascript
const mySchema = new mongoose.Schema({ tags: { type: [String], minlength: [2, '至少需要2个标签。'], // 最小长度 maxlength: [5, '最多只能有5个标签。'] // 最大长度 } });

在这个例子中,minlengthmaxlength属性用于限制数组的长度,同时提供了自定义的错误消息。这种方式的代码更简洁,并直接使用了Mongoose的内置验证器。

2024年6月29日 12:07 回复

你的答案