欢迎光临
@expo/schemer
一个用于博览会的Schema验证库.
详情如下:
使用量
使用 XDL
import { getConfig } from '@expo/config';
import Schemer from '@expo/schemer';
const { exp } = getConfig(projectRoot);
const schema = await getSchemaAsync(exp.sdkVersion);
const validator = new Schemer(require('schema.json'));
validator.validateName('Wilson Zhao');
validator.validateAssets(exp);
只有外观验证
const validator = new Schemer(require('schema.json'));
try {
await validator.validateSchemaAsync(require('data.json'));
} catch (e) {
console.error(e);
}
验证财产
const validator = new Schemer(require('schema.json'));
await validator.validateName('Wilson Zhao');
说明
谋划者使用自定义的 JSON Schema 来验证各种数据.
在引擎盖下,它使用Ajv(https://github.com/epoberezkin/ajv (英语))作为基础schema验证的Javascript引擎. 然而,每个子schema也包含自定义元标记,可以被解析以进一步"人工"验证. 目前,计划员支持对资产进行人工验证:
{
meta:
{
asset,
contentType, //mime type
dimensions: {width, height},
square,
// For custom error messages and docs
regexHuman,
autogenerated,
notHuman
}
}
所有错误均可在 this.errors,该函数将 Ajv JSON Schema 错误和自定义元/资产验证错误合并成一个统一的数组 ValidationErrors。 。 。 .
如果存在错误,则在每个公交功能的末尾投出错误.
所有的公交功能都是同源函数,因为资产验证必须是同源函数(访问文件系统或提出网络请求).
API 密码
新方案人( Object JSON Schema, Object 选项) - > 对象
.validateSchemaAsync(对象数据) - > 答应
返回一个决心 true 如果数据符合计划。 否则,它拒绝并扔出一系列 ValidationError编号.
.validate AssetsAsync(对象数据) - > 答应
返回一个决心 true 如果数据符合在每个元标记中发现的额外验证步骤。 例如,它会下载一个资产并读取文件头来查看它是否属于某个内容类型.
否则,它拒绝并扔出一系列 ValidationError编号.
.validate All(对象数据) - > 答应
运行两者 .validateSchemaAsync 财务报告和审定财务报表 .validateAssetsAsync。 。 。 .
返回一个决心 true 如果数据通过两个函数。 否则,它拒绝并扔出一系列 ValidationError编号.
.validate Property(平面平面,对象数据) - > 答应
提取给定字段路径的子Schema并对照它验证数据。 同时检查元标记.
返回一个决心 true 如果数据符合子schema。 否则,它拒绝并扔出一系列 ValidationError编号.
错误
包含一组验证错误