我必须编写一个 javascript 函数,它可以根据这种模式验证数据。我应该怎么做?我可以为此使用 json 模式吗?这对功能不起作用,所以我应该如何解决这个问题?有没有原生 js 方法可以解决这个问题?
const userSchema = {
name: {
fn: () => String,
option: { default: 'Abhi', enum: ['John', 'Rick', 'Dan'] }
},
phone: {
fn: () => Number,
option: {}
},
cart: {
fn: () => [
{
id: {
fn: () => String,
option: {}
},
count: {
fn: () => Number,
option: {}
}
}
],
option: {}
},
address: {
contactName: {
fn: () => String,
option: {}
},
detailAddress: {
line1: {
fn: () => String,
option: {}
},
line2: {
fn: () => String,
option: {}
},
line3: {
fn: () => String,
option: {}
}
},
pin: {
fn: () => Number,
option: {}
},
country: {
fn: () => String,
option: {}
}
}
};
const user = {
name: 'Ric',
phone: 6610592314,
address: {
contactName: 'Bitu',
detailAddress: {
line1: 'Colony: 2/A',
line2: 'Q. No.: 3-018',
line3: 'Near IT store'
},
pin: 770017,
country: 'India'
},
cart: [
{
id: 'newId',
count: 2
}
]
};
答案 0 :(得分:0)
答案 1 :(得分:0)
我最近一直在研究 JS 运行时方案验证工具,创造性地称为 Types。
它仍处于早期阶段(预计在不久的将来会实现强大的功能),但我认为它可以满足您的需求。目前它还能够处理循环方案。
要安装它,请执行 yarn add @codistica/types
或 npm i @codistica/types
。
然后,这里有一个使用示例(文档仍在进行中):
import {Types} from '@codistica/types';
const myFunctionSchema = new Types({
argA: {type: '!undefined'},
argB: {type: 'Function'},
argC: {
type: 'Object',
def: {
propA: {type: 'number', min: 0, max: 20, def: 10},
propB: {type: 'boolean', def: false},
propC: {type: ['Function', 'null'], def: null},
propD: {type: 'Array<number>', def: [0, 1, 2]}
}
}
});
function myFunction(argA, argB, argC) {
({argA, argB, argC} = myFunctionSchema.validate({
argA,
argB,
argC
}));
if (!myFunctionSchema.isValid()) {
return;
}
}
export {myFunction};
如果您想尝试一下,我很乐意以任何可能的方式为您提供帮助。上面的例子真的是低估了。也许你也可以给我们一些有用的反馈。请告诉我。