猫鼬模式验证具有定义值的数组

时间:2018-12-16 18:21:18

标签: express mongoose mongoose-schema joi

我是猫鼬的新手,正尝试使用枚举之类的预定义值来验证数组。 下面是我的模式

const movieSchema = new mongoose.Schema({
language:{
    type:[String],  
    enum : ['Hindi','English','Gujarati','Marathi'], 
    required:true
}
});

下面是用于验证数组值的JOI模式

const schema = { 
 language:Joi.array().min(1).required()  
};

如何进行验证,以便可以将“语言”字段另存为mongodb中的数组。

以下是要发布的有效json数组

 {"language":["Hindi","English"] }

以下是无效的json,它不应验证架构。

 {"language":["French","Spanish","English"] }

2 个答案:

答案 0 :(得分:0)

.items()中使用.valid()

const schema = { 
  language: Joi.array()
    .items(Joi.string().valid(['Hindi', 'English']))  // only allow(valid) 'Hindi' or 'English' items in array
    .min(1).required()
};

答案 1 :(得分:0)

根据新版本,我认为我们应该在数组之前使用...传播。我在没有 ... 运算符的情况下遇到错误。

private readonly groupSchema = object({
    name: string().required().alphanum().min(5).max(100),
    permissions: Joi.array().items(Joi.string().valid(...['READ', 'WRITE', 'DELETE', 'SHARE', 'UPLOAD_FILES'])).min(1).unique().required()
});