Mongoose模式要求数组可以为空

时间:2014-12-03 09:38:32

标签: arrays validation mongoose required

我有这个架构

var StuffSchema = new mongoose.Schema({
    _id: { type: String, required: true, unique: true },
    name: { type: String, required: true }
});

mongoose.model('Stuff', StuffSchema);

工作正常。

现在我需要添加另一个包含此

的模式“Cargo”
mystuff: { type:[String], ref: 'Stuff', required:true},

也就是说,我希望mystuff包含Stuff的id数组,但是在运行此代码时失败并出现验证错误

mongoose.model('Cargo').create( some data...)

如果我为mystuff字段使用空数组。 如果我将Cargo架构更改为

,它似乎有效
mystuff: { type:[String], ref: 'Stuff'},

但我希望mystuff字段是必需的并允许空数组

我该怎么做才能实现这一目标?

1 个答案:

答案 0 :(得分:13)

默认情况下会创建空数组(另请参阅this)。属性required: true要求数组中至少包含一个元素(source code)。您可以删除该属性以获得所需的行为。

(除此之外,mongoose为所有模式分配一个类型为ObjectId的默认_id字段。声明它是不必要的,并且使用字符串不是典型的,尽管当然是允许的。)

2017年11月编辑:这是Mongoose 5中的候选更改。请参阅https://github.com/Automattic/mongoose/issues/5139