json-schema 中的映射值
Mapping values in json-schema
因此 JSON 架构由 Fastify 团队定义 here and I'm particularly using fluent-json-schema 实现。
我在移植到 Fastify 的 Express 应用程序中使用 Joi 进行验证。
我对复选框和选择单选输入进行了大量验证。我想知道如何将两个布尔值分配给任意字符串值
// So this is possible in Joi but not in `fluent-json-schema`
S.boolean().truthy('on').falsy('off').default(false)
不仅对于布尔值,如果能够映射值会很好,因为这在前端和后端架构中非常方便。
我设法使用 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 })
}
})
因此 JSON 架构由 Fastify 团队定义 here and I'm particularly using fluent-json-schema 实现。
我在移植到 Fastify 的 Express 应用程序中使用 Joi 进行验证。
我对复选框和选择单选输入进行了大量验证。我想知道如何将两个布尔值分配给任意字符串值
// So this is possible in Joi but not in `fluent-json-schema`
S.boolean().truthy('on').falsy('off').default(false)
不仅对于布尔值,如果能够映射值会很好,因为这在前端和后端架构中非常方便。
我设法使用 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 })
}
})