node.js - 自定义响应消息,用于验证 Node js 中的所有必需参数

标签 node.js express response

我是 NodeJS 和 Express 的新手,我想验证 API 参数。 现在我通过以下方式验证参数:

if(!req.body.parametername)
    return res.send({"message": "Please provide parametername"});

if(!req.body.parametername)
    return res.send({"message": "parametername can not be blank"});

但我希望得到的响应是这样的:

{
    "username": [
        "This field is required."
    ],
    "password": [
        "This field can not be blank."
    ]
}

如果参数无效或未提供,这就是我想要的响应。

最佳答案

您可能会找到express-validator成为您在这里所需要的。 特别是本节:

req.assert('email', 'required').notEmpty();
req.assert('email', 'valid email required').isEmail();
req.assert('password', '6 to 20 characters required').len(6, 20);

var errors = req.validationErrors(); // Or req.asyncValidationErrors();
var mappedErrors = req.validationErrors(true); // Or req.asyncValidationErrors(true);

mappedErrors 将如下所示:

{
  email: {
    param: "email",
    msg: "valid email required",
    value: "<received input>"
  },
  password: {
    param: "password",
    msg: "6 to 20 characters required",
    value: "<received input>"
  }
}

关于node.js - 自定义响应消息,用于验证 Node js 中的所有必需参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39346886/

相关文章:

javascript - 路由问题,不收集 req.params

java - 返回 200 响应代码而不是 204

javascript - 关于分页符,如何让 Puppeteer PDF 生成与 HTML 文档完全匹配?

node.js - 为什么在 Node.js CPU 绑定(bind)代码中使用异步模式?

node.js - 如果包含在 sequelize 中找不到任何关系数据,则设置属性的空值

javascript - 让 socket.io、express 和 node-http2 通过 HTTP/2 进行通信

google-analytics - JMeter:如果无法在数据库或任何分析工具上进行验证,如何确保来自 JMeter 的请求命中已到达服务器

javascript - 设置 javascript 变量的 Ajax 响应覆盖了任何 html 元素

node.js - 在 Mongoose 模式预保存功能中使用异步调用

javascript - 范围错误: Maximum call stack size exceeded from unknown reason