You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

82 lines
2.4 KiB

// | ------------------------------------------------------------
// | @版本: version 0.1
// | @创建人: 【Nie-x7129】
// | @E-mail: x71291@outlook.com
// | @所在项目: P01CentralControl
// | @文件描述: index.js -
// | @创建时间: 2024-01-15 10:49
// | @更新时间: 2024-01-15 10:49
// | @修改记录:
// | -*-*-*- (时间--修改人--修改说明) -*-*-*-
// | =
// | ------------------------------------------------------------
import Ajv from 'ajv';
// ajv错误消息回应
import ajvErrors from 'ajv-errors';
// 将字符串转化为全小写
export function isLowerCase(ajv){
ajv.addKeyword({
keyword: 'isLowerCase',
// 开启错误收集
errors: true,
modifying: true,
validate: function validateIsEven(schema, data, parentSchema, dataCxt) {
if(typeof data == 'string'){
dataCxt.parentData[dataCxt.parentDataProperty] = dataCxt.parentData[dataCxt.parentDataProperty].trim().toLowerCase();
return true;
}else{
validateIsEven.errors = [ {
message: '错误的数据'
} ];
return false;
}
}
});
}
// 去除两端空格
export function isTrim(ajv){
ajv.addKeyword({
keyword: 'isTrim',
type: 'string',
// 开启错误收集
errors: true,
modifying: true,
validate: function validateIsEven(schema, data, parentSchema, dataCxt) {
if(typeof data == 'string'){
dataCxt.parentData[dataCxt.parentDataProperty] = dataCxt.parentData[dataCxt.parentDataProperty].trim();
return true;
}else{
validateIsEven.errors = [ {
message: 'is note String'
} ];
return false;
}
}
});
}
// 给fastify添加自定义的参数校验规则
function customAjv(fastify, options){
// 创建一个新的 AJV 实例
// 创建一个新的 AJV 实例
const ajv = new Ajv({
removeAdditional: true,
useDefaults: true,
coerceTypes: true,
// jsonPointers: true,
allErrors: true
});
ajvErrors(ajv);
isLowerCase(ajv);
// 使用自定义的 AJV 实例为 Fastify 设置验证器编译器
fastify.setValidatorCompiler(({ schema, method, url, httpPart }) => {
return ajv.compile(schema);
});
}