Node.js 使用trim进行fastfy模式验证
我已经写了一个模式如下Node.js 使用trim进行fastfy模式验证,node.js,jsonschema,ajv,fastify,Node.js,Jsonschema,Ajv,Fastify,我已经写了一个模式如下 input: { type: "string", allOf: [ { transform: [ "trim" ] }, { minLength
input: {
type: "string",
allOf: [
{
transform: [
"trim"
]
},
{
minLength: 1
}
],
transform: ["trim"],
trim: true,
description: "Input",
minLength: 1,
maxLength: 3
}
我想完成两件事-我想修剪输入,我想验证修剪后的输入是否具有minLength=1。
为此,我尝试了所有不同的配置,但到目前为止都没有成功。我使用的是fastify版本3.0.0,我相信它使用ajv验证器进行转换和验证。验证部分正在工作,但是没有进行修剪。
转换
不是标准的json模式功能
因此,您需要配置ajv
使其工作:
请注意,allOf
数组是按顺序执行的,因此如果在根文档中移动min/max
关键字,将计算空格
const fastfy=require('fastfy')
常数fastfy=fastfy({
是的,
ajv:{
插件:[
[require('ajv-keywords'),['transform']]
]
}
})
fastify.post(“/”{
处理程序:async(req)=>{return req.body},
模式:{
正文:{
类型:“对象”,
特性:{
输入:{
键入:“字符串”,
所有:[
{transform:['trim']},
{minLength:1},
{maxLength:3}
]
}
}
}
}
})
禁食注射({
方法:“POST”,
url:“/”,
有效载荷:{
输入:“foo”
}
},(\uRes)=>{
控制台日志(res.payload);
})
我面临着这个问题。任何需要解决的问题都会非常棘手,这是一个版本不兼容的问题