这是检查Node中的请求主体的有效方法吗?

时间:2015-05-08 17:43:55

标签: node.js

我认为非常自我解释。我有一个注册功能,我已经遵循了几乎所有教程的建议,说要将应用程序逻辑与客户端分离。那么,这个服务器代码是一个很好的方法来处理确保所有需要的字段吗?为什么或为什么不呢?

PS:_.contains来自lodash库。

function checkBody(body, callback){
  var required = ['username', 'password', 'email'];
  for (x in required){
    if (!_.contains(body, required[x])){
      callback(null, false);
    }
  }
  callback(null, true);
}

1 个答案:

答案 0 :(得分:1)

我喜欢使用JSON schemas来验证请求正文,因为它允许您以声明方式强制执行您的要求。您还可以编写一个通用的中间件函数来保持代码的美观和清洁。 tv4是一个很好的库来完成这项工作。这是一个小例子:

var tv4 = require('tv4');

var enforceSchema = function(schema) {
    return function(req, res, next) {
        if (!tv4.validate(req.body, schema)) {
            res.status(400).end();
        } else {
            next();
        }
    };
};

var loginSchema = {
    properties: {
        username: {
            type: 'string',
            minLength: 1
        },
        email: {
            type: 'string',
            minLength: 1
        },
        password: {
            type: 'string',
            minLength: 1
        }
    },
    required: ['username', 'email', 'password']
};

app.post('/signup', enforceSchema(loginSchema), function(req, res, next) {
    res.end();
});