我有一个看起来像这样的猫鼬模型:
var ProjectSchema = new Schema({
name: { type: String, required: true },
tags: [{ type: String, required: true }]
});
我希望项目至少需要一个标记才能使用它。但是当我保存一个没有标签数组的新项目时,mongoose不会抛出错误:
var project = new Project({'name': 'Some name'});
project.save(function(err, result) {
// No error here...
});
我在这里缺少什么?如何指定所需的数组?
答案 0 :(得分:15)
答案 1 :(得分:5)
AFAIK,您需要将type
设置为Array
并添加自定义验证程序,以确保每个条目都是String
:
tags : {
type : Array,
required : true,
validate : {
validator : function(array) {
return array.every((v) => typeof v === 'string');
}
}
}
答案 2 :(得分:0)
好的,我尝试了一种新方法,它似乎对猫鼬很好用 ^5.11.15 我不确定这是否是干净代码方面的正确答案,但就创建数组的功能而言需要的数字/字符串(意味着它不会接受空数组)它可以正常工作,因此如下
size: [{
type: Number,
required: true
}],
代替
size: {
type: [Number],
required: true
},
我没有将类型定义为数字/字符串数组,而是将大小定义为数字数组,然后所需的属性可以正常工作,因为它不接受空数组并引发错误以说明这一点. 再次,我不确定这是否是定义所需数组的最佳方法,但就其功能而言,它工作得很好