gpt4 book ai didi

typescript - Express-validator 验证导致 typescript 错误 : request. query Object is possibly 'undefined'

转载 作者:行者123 更新时间:2023-12-04 14:07:32 30 4
gpt4 key购买 nike

我正在使用 express 构建一个 Node.js 应用程序,我想用 express-validator 改进它。这是我第一次使用 express-validator,我不明白它引起的警告。它的文档也不是很冗长。

这是我添加验证之前的一个简化版本,数据库调用已被 GET 请求中的 entry_id 发送回响应所取代。

router.get(
'/list_entries',
function (req, res, next) {
res.send(req.query.entry_id)
}
)

我添加了验证以检查 entry_id 是否在 req.query 中给出并且在有效范围内。:

router.get(
'/list_entries',
query('entry_id').isInt({ min: 1 }),
function (req, res, next) {
const errors = validationResult(req)
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() })
}
res.send(req.query.entry_id)
}
)

它似乎运行良好,如果值超出范围,则会显示错误。然而,这也触发了 typescript 中的警告:Object is possibly 'undefined' referenced to req.query in the response.我不清楚验证是如何导致这种情况的,以及我该如何克服它(除了使用像 req.query?.entry_id 这样的可选链接之外)。我想知道在哪里可以找到一些文档或工作示例来启发我。提前致谢!

最佳答案

您的问题与 Express Validator 无关,只是 Typescript 比较小心。

它推断它不能证明(在编译时)定义了req.query,所以它警告你req.query.entry_id 可能会在运行时导致 TypeError。

最简单的解决方案是这样写:

res.send(req.query?.entry_id)

这只是以下内容的简写:

res.send(req.query === undefined ? undefined : req.query.entry_id)

关于typescript - Express-validator 验证导致 typescript 错误 : request. query Object is possibly 'undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67254053/

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