Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用trim进行fastfy模式验证_Node.js_Jsonschema_Ajv_Fastify - Fatal编程技术网

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);
})

我面临着这个问题。任何需要解决的问题都会非常棘手,这是一个版本不兼容的问题