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