【发布时间】:2020-06-30 01:34:56
【问题描述】:
我正在尝试验证所下订单的请求正文。我在尝试验证的请求正文上收到了一组 json 对象。每次我收到错误“需要“productId””
这是我的请求正文:
req.body={
"productId": [
{ "id": "5dd635c5618d29001747c01e", "quantity": 1 },
{ "id": "5dd63922618d29001747c028", "quantity": 2 },
{ "id": "5dd635c5618d29001747c01e", "quantity": 3 }
]
}
这里是验证请求正文的 valdateOrder 函数:
function validateOrder(req.body) {
const schema = {
productId: joi.array().items(
joi.object().keys({
id: joi.string().required(),
quantity: joi.string().required()
})).required(),
}
return joi.validate(req.body, schema)
}
如果有人能指出我的 validateOrder 函数有什么问题,我将非常感激。
【问题讨论】:
-
您在路由前使用的是
express.json()还是bodyParser.json()?你能console.log(req.body)吗? -
是的,我正在使用 express.json()。 Joi 验证在除此路线之外的所有其他路线中运行顺利。我觉得我在验证对象数组时犯了一些错误。
-
天哪。我刚刚去了console.log(req.body),发现我将“req”传递给了validateOrder(req) 而不是req.body。不敢相信我在这个最小的错误上一直摸不着头脑超过三个小时。解决了。
-
谢谢@cbr :)
-
如果您对自己的解决方案感到满意,您可以回答自己的问题!我建议您查看下面 Mike 的答案,以了解有关构建应用程序的好方法的示例。
标签: javascript node.js mongodb express joi