我有一个对象数组要从特定模式进行验证,如果任何对象与给定模式匹配,我想对其进行验证并忽略其他模式并移至下一个数组项。
我尝试了 Joi.alternatives,但它会检查所有模式,而不是仅检查一个匹配的模式。
我的验证器:
Joi.array().min(1).max(49).items(Joi.object({
type: Joi.number().valid([1, 2, 3, 4]).required()
}).when(Joi.object({
type: Joi.number().valid(1)
}).unknown(), {
then: profile1
}).when(Joi.object({
type: Joi.number().valid(2)
}).unknown(), {
then: profile2
}).when(Joi.object({
type: Joi.number().valid(3)
}).unknown(), {
then: profile3
}))
Run Code Online (Sandbox Code Playgroud)
配置文件1//类型1
export default Joi.object().keys({
type: Joi.number().valid([1, 2, 3]).required(),
surname: Joi.string().max(50).allow(""),
givenname: Joi.string().max(50).allow("")
}).unknown(true)
Run Code Online (Sandbox Code Playgroud)
配置文件2//类型2
export default Joi.object().keys({
type: Joi.number().valid([1, 2, 3]).required(),
address: Joi.string().max(50).allow(""),
initialname: Joi.string().max(50).allow(""),
surname: Joi.string().max(50).allow(""),
data: Joi.array.min(1).max(29).items(Joi.object({
code: Joi.string().max(20).allow(""),
number: Joi.string().max(20).allow(""),
}),
address1: Joi.array.min(1).max(29).items(Joi.object({
city: Joi.string().max(20).allow(""),
postal: Joi.string().max(20).allow(""),
})
}).unknown(true)
Run Code Online (Sandbox Code Playgroud)
配置文件3//类型3
export default Joi.object().keys({
type: Joi.number().valid([1, …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个将 data2 对象值映射到 data1 名称的函数。
我试图用 data1 迭代 data2 object2,但它不能正常工作。我能够映射它们,但当 data2 中不存在 data1 时,无法获取它的值。
有什么方法可以正确映射以获得代码中提到的所需输出?
let data1 = {
attributes: [{
Id: 'test1',
Name: 'Test1',
Type: 'date'
},
{
Id: 'test2',
Name: 'Test2',
Type: 'string'
},
{
Id: 'test3',
Name: 'Test3',
Type: 'string'
},
{
Id: 'test4',
Name: 'Test4',
Type: 'boolean'
}
]
};
let data2 = {
value: [{
test1: '10-12-2021',
test2: '4',
dummy: 'ignore me'
},
{
test3: '3',
test4: true,
abc: 'ignore me'
},
{
test1: '12-12-2023', …Run Code Online (Sandbox Code Playgroud)我正在寻找有效的解决方案,以避免用户一次又一次地单击提交按钮,直到他们从后端 API 得到响应。
我想过以下解决方案,但正在寻找任何其他方法来处理这个问题。
使用 loader 将禁用整个 html,直到我们得到一些响应。
使用exhaustmap避免多次http调用
使用throttletime 将手动不允许用户点击特定时间段。
如果我们可以使用任何其他解决方案,请指导我。
javascript ×3
angular ×1
arrays ×1
for-loop ×1
joi ×1
node.js ×1
object ×1
rxjs ×1
typescript ×1
validation ×1