【问题标题】:Why did celebrate request validation failed?为什么庆祝请求验证失败?
【发布时间】:2021-01-20 03:19:49
【问题描述】:

我试图从medium 复制亚当的例子。

    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

【问题讨论】:

    标签: node.js express joi


    【解决方案1】:

    当您尝试使用res.json({ success: true, data : { name, age, role }}); 返回数据时,没有定义任何变量nameagerole。您需要先从请求正文中检索它们。

    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 }});
    

    【讨论】:

      猜你喜欢
      • 2018-05-22
      • 1970-01-01
      • 2013-09-30
      • 1970-01-01
      • 1970-01-01
      • 2012-07-17
      • 2019-05-14
      • 2014-11-23
      • 2012-05-10
      相关资源
      最近更新 更多