Express-validator:我们如何验证对象键?
Express-validator: How can we validate an Object keys?
我在使用 express-validator 验证具有两个键的对象时遇到问题。我的方法如下所示。
check('contact.code')
.trim()
.isNumeric()
.withMessage('Country code must be numeric.')
.bail()
.isLength({min: 1, max: 4})
.withMessage('Invalid country code.')
.bail(),
check('contact.number')
.trim()
.isNumeric()
.withMessage('Phone number must be numeric.')
.bail()
.isLength({max: 10, min: 10})
.withMessage('Phone number must be 10 digits long.')
.bail(),
在 req.body 我发送我的联系方式,
contact: {"code": "91", "number":"9087654321"}
但我收到错误:
{
"errors": [
{
"value": "",
"msg": "Country code must be numeric.",
"param": "contact.code",
"location": "body"
},
{
"value": "",
"msg": "Phone number must be numeric.",
"param": "contact.number",
"location": "body"
}
]
}
我已经在谷歌上搜索过了,但没有找到任何结果。请帮我解决这个问题。
任何形式的帮助将不胜感激。
按如下方式设置 sanitazion/validation check
中间件似乎工作正常:
const validationResult = require('express-validator').validationResult;
const check = require('express-validator').check;
const express = require('express');
const app = express();
app.use(express.json());
app.post('/test-validation',
[
check('contact.code')
.trim()
.isNumeric()
.withMessage('Country code must be numeric.')
.bail()
.isLength({ min: 1, max: 4 })
.withMessage('Invalid country code.')
.bail(),
check('contact.number')
.trim()
.isNumeric()
.withMessage('Phone number must be numeric.')
.bail()
.isLength({ max: 10, min: 10 })
.withMessage('Phone number must be 10 digits long.')
.bail(),
], (req, res) => {
const errors = validationResult(req).array();
if (errors && errors.length) {
console.log(errors);
res.status(400).json({ errors });
} else {
res.status(201).end();
}
});
app.listen(3000, () => console.log(`Server running`));
Here's codesandbox 上的这段代码和示例卷曲:
curl --location --request POST 'https://mwjbg.sse.codesandbox.io/test-validation' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Cookie: __cfduid=d7012caa5f36c195967d2fc26d3b7bd431595933685' \
--data-raw '{ "contact": {"code": "1sdf23", "number":"9087654321"}}'
这个卷曲将 return:
{
"errors": [
{
"value": "1sdf23",
"msg": "Country code must be numeric.",
"param": "contact.code",
"location": "body"
}
]
}
我在使用 express-validator 验证具有两个键的对象时遇到问题。我的方法如下所示。
check('contact.code')
.trim()
.isNumeric()
.withMessage('Country code must be numeric.')
.bail()
.isLength({min: 1, max: 4})
.withMessage('Invalid country code.')
.bail(),
check('contact.number')
.trim()
.isNumeric()
.withMessage('Phone number must be numeric.')
.bail()
.isLength({max: 10, min: 10})
.withMessage('Phone number must be 10 digits long.')
.bail(),
在 req.body 我发送我的联系方式,
contact: {"code": "91", "number":"9087654321"}
但我收到错误:
{
"errors": [
{
"value": "",
"msg": "Country code must be numeric.",
"param": "contact.code",
"location": "body"
},
{
"value": "",
"msg": "Phone number must be numeric.",
"param": "contact.number",
"location": "body"
}
]
}
我已经在谷歌上搜索过了,但没有找到任何结果。请帮我解决这个问题。 任何形式的帮助将不胜感激。
按如下方式设置 sanitazion/validation check
中间件似乎工作正常:
const validationResult = require('express-validator').validationResult;
const check = require('express-validator').check;
const express = require('express');
const app = express();
app.use(express.json());
app.post('/test-validation',
[
check('contact.code')
.trim()
.isNumeric()
.withMessage('Country code must be numeric.')
.bail()
.isLength({ min: 1, max: 4 })
.withMessage('Invalid country code.')
.bail(),
check('contact.number')
.trim()
.isNumeric()
.withMessage('Phone number must be numeric.')
.bail()
.isLength({ max: 10, min: 10 })
.withMessage('Phone number must be 10 digits long.')
.bail(),
], (req, res) => {
const errors = validationResult(req).array();
if (errors && errors.length) {
console.log(errors);
res.status(400).json({ errors });
} else {
res.status(201).end();
}
});
app.listen(3000, () => console.log(`Server running`));
Here's codesandbox 上的这段代码和示例卷曲:
curl --location --request POST 'https://mwjbg.sse.codesandbox.io/test-validation' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Cookie: __cfduid=d7012caa5f36c195967d2fc26d3b7bd431595933685' \
--data-raw '{ "contact": {"code": "1sdf23", "number":"9087654321"}}'
这个卷曲将 return:
{
"errors": [
{
"value": "1sdf23",
"msg": "Country code must be numeric.",
"param": "contact.code",
"location": "body"
}
]
}