所以JSON模式被定义为这里,我特别使用Fastify团队的fluent-json模式实现。
我在一个正在移植到Fastify的Express应用程序中使用乔依进行验证。
对于复选框和选择无线电输入,我使用了大量的验证。我想知道如何将这两个布尔值赋给任意的字符串值。
// So this is possible in Joi but not in `fluent-json-schema`
S.boolean().truthy('on').falsy('off').default(false)不仅对布尔人来说,有可能映射值是很好的,因为这在前面和后面的体系结构中非常方便。
发布于 2022-01-25 16:49:17
我成功地使用preValidation回调映射了值。
function prevalidation_1(request, reply, done) {
request.body = Object.fromEntries(
Object.keys(request.body).map((key) => {
if(key === 'exact') {
const isTrue = request.body[key] == 'on' ? true : false
return [key, isTrue]
} else {
return [key, request.body[key]]
}
})
)
done()
}// Example secured route
fastify.route({
method: 'POST',
url: '/upload',
preHandler: fastify.auth([
fastify.verifyJWT,
]),
preValidation: prevalidation_1,
handler: (req, reply) => {
req.log.info('Upload route')
const { body } = req
reply.send({ hello: body.exact })
}
})https://stackoverflow.com/questions/70847342
复制相似问题