Javascript React.js joi浏览器根据数据库进行验证

Javascript React.js joi浏览器根据数据库进行验证,javascript,reactjs,database,components,joi,Javascript,Reactjs,Database,Components,Joi,我正在尝试使用“joi浏览器”模式验证输入。 我希望输入值仅在与处于状态的数组中任何一个对象内的description属性相似时才有效。 该数组来自数据库,并在componentDidMount上设置 到目前为止,架构是这样的: orderItemsSchema={ id:Joi.number(), description:Joi.string().min(6).max(30).label(“description”), 数量:Joi.number().min(1).标签(“数量”), };

我正在尝试使用“joi浏览器”模式验证输入。 我希望输入值仅在与处于状态的数组中任何一个对象内的description属性相似时才有效。 该数组来自数据库,并在componentDidMount上设置

到目前为止,架构是这样的:

orderItemsSchema={
id:Joi.number(),
description:Joi.string().min(6).max(30).label(“description”),
数量:Joi.number().min(1).标签(“数量”),
};
模式={
custName:Joi.string().min(2).max(30).required().label(“客户名称”),
orderItems:Joi.array()
.标签(“订单项”)
.required()
.items(此.orderitemschema),

};在componentDidMount从数据库获取数据后,使用componentDidUpdate更新架构

orderItemsSchema={};
模式={};
//从数据库获取数据并设置状态
componentDidMount=async()=>{
常数{
数据:dbdata
}=等待productService.getAllProducts();
if(dbdata){
这是我的国家({
数据库数据
});
}
};
//获取数据后更新Joi架构
componentDidUpdate=()=>{
this.orderItemsSchema={
id:Joi.number(),
描述:Joi.string()
.valid(this.state.dbdata.map((项)=>item.description))
//仅当与项描述匹配时才有效
.标签(“说明”),
数量:Joi.number().min(1).标签(“数量”),
};
this.schema={
custName:Joi.string().min(2).max(30).required().label(“客户名称”),
orderItems:Joi.array()
.标签(“订单项”)
.required()
.items(此.orderitemschema),
重要提示:Joi.boolean().required(),
总价:Joi.number().required(),
};
};