我有这个架构
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字段是必需的并允许空数组
我该怎么做才能实现这一目标?
答案 0 :(得分:13)
默认情况下会创建空数组(另请参阅this)。属性required: true
要求数组中至少包含一个元素(source code)。您可以删除该属性以获得所需的行为。
(除此之外,mongoose为所有模式分配一个类型为ObjectId的默认_id
字段。声明它是不必要的,并且使用字符串不是典型的,尽管当然是允许的。)
2017年11月编辑:这是Mongoose 5中的候选更改。请参阅https://github.com/Automattic/mongoose/issues/5139。