gpt4 book ai didi

javascript - 如何使用 Joi 清理 hapi 的查询参数?

转载 作者:搜寻专家 更新时间:2023-11-01 00:00:36 27 4
gpt4 key购买 nike

我想知道我是否可以使用 Joi 自动清理查询参数而不是手动清理?

这是我为路线所做的。

var querystring = require('querystring');

function dateToString(date) {
return moment(new Date(querystring.unescape(date))).toISOString();
}

function posts(request, reply) {
request.query.from = dateToString(request.query.from);
}

这是 Joi 架构。

var topPostsConfig = {
description: 'Top posts',
plugins: {
'hapi-swagger': {
order: 1
}
},
validate: {
query: {
form: Joi.date().iso().optional().default(moment().subtract(2, 'day').utc().format()).description('start date for query')
}
}
}

{
method: 'GET',
path: '/posts',
handler: posts,
config: topPostsConfig
}

只是想知道 Joi 是否有任何特殊方法来自动将查询参数清理为未转义字符?

编辑:请求以 2016-02-05T20%3A26%3A34.916Z 形式出现,由浏览器转义。我在想,如果 Joi 可以自动取消转义,那么我就不必手动完成了。

最佳答案

首先,您在验证的字段上有一个拼写错误 - “form”而不是“from”。

Joi 应该接收解码后的 URL 查询。通过用函数替换 JOI 查询验证对象并检查值,可以很容易地进行检查:

server.route({
method: 'GET',
path: '/posts',
handler: (req, reply) => {
reply(req.query);
},
config: {
description: 'Top posts',
validate: {
query: (value, options, next) => {
console.log(value);
next(null, value);
},
},
},
});

当您修复示例中的拼写错误时,它会按预期工作。

如果你想做一些额外的数据处理,你总是可以只使用验证的函数形式,并从函数体中使用 Joi.validate()。

关于javascript - 如何使用 Joi 清理 hapi 的查询参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35235464/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com