FOR*_*RAN 11 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);
Run Code Online (Sandbox Code Playgroud)
工作良好.
现在我需要添加包含此内容的另一个模式"Cargo"
mystuff: { type:[String], ref: 'Stuff', required:true},
Run Code Online (Sandbox Code Playgroud)
也就是说,我希望mystuff包含Stuff的id数组,但是在运行此代码时,这会因验证错误而失败
mongoose.model('Cargo').create( some data...)
Run Code Online (Sandbox Code Playgroud)
如果我为mystuff字段使用空数组.如果我将Cargo架构更改为,它似乎有效
mystuff: { type:[String], ref: 'Stuff'},
Run Code Online (Sandbox Code Playgroud)
但我希望mystuff字段是必需的并允许空数组
我该怎么做才能实现这一目标?
Zac*_*chB 15
空数组默认创建(另见本).该属性required: true要求数组中至少包含一个元素(源代码).您可以删除该属性以获得所需的行为.
(除此之外,_idmongoose为所有模式分配一个ObjectId类型的默认字段.声明它是不必要的,并且使用字符串不是典型的,尽管当然是允许的.)
编辑2017年11月:这是Mongoose 5中的候选更改.请参阅https://github.com/Automattic/mongoose/issues/5139.