【发布时间】:2021-07-19 02:01:18
【问题描述】:
我正在使用 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)
}
)
它似乎运行良好,如果值超出范围,则会显示错误。
但是,这也触发了打字稿中的警告:Object is possibly 'undefined' 在响应中引用req.query。我不清楚验证是如何导致这种情况的,以及如何克服它(除了使用像req.query?.entry_id 这样的可选链接)。我想知道在哪里可以找到一些文档或工作示例来启发我。提前致谢!
【问题讨论】:
-
这可能与您的
tsconfig.json文件有关,而不是 express-validator。它可能会通过您的配置中的此设置“strictNullChecks”:true 引发。如果你将它设置为 false,那么你应该很好......它基本上告诉你在尝试使用它之前应该检查req.query是否为空/未定义(req.query.entry_id) -
谢谢,在我的
tsconfig.json中,strictNullChecks 确实是正确的。当我不使用 express-validator 时,我看不出为什么没有出现 TS 错误(在第一个示例中的第 4 行)。我唯一的猜测是 express-validator 确实以某种方式修改了req。
标签: typescript express express-validator