检查发布数据中的传递字段[NodeJS]

时间:2014-03-21 08:09:33

标签: javascript json node.js validation rest

我在节点js中传递帖子数据时遇到问题。我已经知道这是如何工作的,但我不知道如何验证帖子数据中的字段。

示例:

如果我传递了json {"userInfo":"myusername"},我的服务器会接受它。 但是如果我传递一个带有无效格式的json,就像这个{"usersInfo":"myusername"}我的服务器崩溃了。我的目标是在收到数据之前我需要检查字段是否有效,如果不是,我会发送400错误请求状态代码res.writeHead(400);

    app.post('/api/adduser', function(req, res) {

         var userInfo = req.body.userInfo;

         //code goes here

    });

有什么方法可以做到这一点吗?谢谢你们。

2 个答案:

答案 0 :(得分:1)

至少你应该检查是否定义了req.body.userInfo。

app.post('/api/adduser', function(req, res) {
     if( typeof req.body.userInfo === "undefined" ) {
         // error code here
     } else {
         // add-user code goes here
     }
});

我建议不要使用userInfo == undefined,因为你只是为了抓错而创建一个破解。不要去那里。

更强大的解决方案是使用验证模块。 node.js有一些不同的验证器。你选择的将取决于你的口味和你正在使用的框架(表达,解决等)。验证器确实超出了原始问题的范围,但您知道,仅供参考。

答案 1 :(得分:0)

如果您的密钥名称不同,您可以检查它是否未定义:

if(userInfo == undefined){
    res.writeHead(400)
}