为什么庆祝请求验证失败?
Why did celebrate request validation failed?
我试图从 medium 重现 Adam 的示例。
const app = express();
app.use(expressLogger);
app.use(BodyParser.json());
app.post('/signup', celebrate({
body: Joi.object().keys({
name: Joi.string().required(),
age: Joi.number().integer(),
role: Joi.string().default('admin')
}),
query: {
token: Joi.string().token().required()
}
}), (req, res) => {
logger.debug('Calling res.send');
res.json({ success: true, data : { name, age, role }});
});
这是错误
"message": "celebrate request validation failed",
"validation": {
"query": {
"source": "query",
"keys": [
"token"
],
"message": "\"token\" is required"
}
邮递员POST请求
{
'name' : 'John J.',
'age' : 23,
}
我将令牌设置为参数,现在可以正常工作了。
我现在遇到引用错误。
<body>
<pre>ReferenceError: name is not defined<br>
这是一个简单的例子。这是 pino-logger 显示的内容
err":{"type":"Error","message":"failed with status code 500","stack":"Error: failed with status code 500\n at ServerResponse.onResFinished (/home/trajche/pract/joi1/node_modules/pino-http/logger.js:73:38)\n at ServerResponse.emit (events.js:326:22)\n at onFinish (_http_outgoing.js:751:10)\n at callback (_stream_writable.js:501:21)\n at afterWrite (_stream_writable.js:454:5)\n at afterWriteTick (_stream_writable.js:441:10)\n at processTicksAndRejections (internal/process/task_queues.js:79:21)"},"responseTime":3,"msg":"request errored"}
ReferenceError: name is not defined
当您尝试使用 res.json({ success: true, data : { name, age, role }});
、none 的变量 name
、age
或 role
来 return 数据时定义。您需要先从请求正文中检索它们。
与
res.json({ success: true, data : { name: req.body.name, age: req.body.age, role: req.body.role }});
或者更好的方法
const { name, age, role } = req.body;
res.json({ success: true, data : { name, age, role }});
我试图从 medium 重现 Adam 的示例。
const app = express();
app.use(expressLogger);
app.use(BodyParser.json());
app.post('/signup', celebrate({
body: Joi.object().keys({
name: Joi.string().required(),
age: Joi.number().integer(),
role: Joi.string().default('admin')
}),
query: {
token: Joi.string().token().required()
}
}), (req, res) => {
logger.debug('Calling res.send');
res.json({ success: true, data : { name, age, role }});
});
这是错误
"message": "celebrate request validation failed",
"validation": {
"query": {
"source": "query",
"keys": [
"token"
],
"message": "\"token\" is required"
}
邮递员POST请求
{
'name' : 'John J.',
'age' : 23,
}
我将令牌设置为参数,现在可以正常工作了。 我现在遇到引用错误。
<body>
<pre>ReferenceError: name is not defined<br>
这是一个简单的例子。这是 pino-logger 显示的内容
err":{"type":"Error","message":"failed with status code 500","stack":"Error: failed with status code 500\n at ServerResponse.onResFinished (/home/trajche/pract/joi1/node_modules/pino-http/logger.js:73:38)\n at ServerResponse.emit (events.js:326:22)\n at onFinish (_http_outgoing.js:751:10)\n at callback (_stream_writable.js:501:21)\n at afterWrite (_stream_writable.js:454:5)\n at afterWriteTick (_stream_writable.js:441:10)\n at processTicksAndRejections (internal/process/task_queues.js:79:21)"},"responseTime":3,"msg":"request errored"}
ReferenceError: name is not defined
当您尝试使用 res.json({ success: true, data : { name, age, role }});
、none 的变量 name
、age
或 role
来 return 数据时定义。您需要先从请求正文中检索它们。
与
res.json({ success: true, data : { name: req.body.name, age: req.body.age, role: req.body.role }});
或者更好的方法
const { name, age, role } = req.body;
res.json({ success: true, data : { name, age, role }});