【发布时间】:2019-01-23 14:21:06
【问题描述】:
我在使用“express-validator”包验证嵌套对象请求正文时遇到了一些问题。假设我们有一种方法可以使用这样的主体收集用户输入:
{
"general": {
"sessionId": "a2957207-e033-49e7-b9da-1c5f946a1074",
"os": "android",
"vendor": "htc"
},
"data": [
{
"target": "logPageVisits",
"pageName": "users/packages",
"engagementTime": 350
}
]
}
express-validator 只提供这样的验证:
req.checkBody('engagementTime')
.notEmpty()
.withMessage('Engagement-Time is required')
似乎没有像这样验证嵌套对象的干净方法:
req.checkBody('data.engagementTime')
.notEmpty()
.withMessage('Engagement-Time is required')
我在Github 上发现了一个已关闭的问题!但这并不能满足我的担忧!
有更好的建议吗?
【问题讨论】:
-
嘿,我遇到了同样的问题,但很难找到解决方案。你搞清楚了吗?
-
嗨,最终我编写了自己的验证方法,它运行良好这里只是一个提示:
if (typeof validationObject.field !== validationObject.filter) { validationErrors =${validationObject.fieldName} 必须是 ${validationObject.filter}; }的类型 -
是的,可以。同时我正在尝试使用 checkSchema,看看它是否有趣。
-
另外我忘了提到嵌套对象我必须使用 for 循环,我检查了输入变量的类型,如果是对象或数组,我会遍历元素。
-
最后它工作得很好,我只是在写名字时出错了。实际上这是正文:{ payload: { identifier: 'xxxxx', type: false, data: { name: 'xxx' } } } 所以我只需要写 check('payload.data.name'), at首先我忘记了“有效载荷”
标签: javascript node.js validation express