我正在尝试实现正确的后期验证,这在使用 Express.JS 时是 Eloquent 且干燥的。正确执行此操作的最佳方法是什么?
这是一个代码片段,我试图确保此 POST 路由不会使 Node.js 服务器崩溃并且类型安全。但我觉得这是实现这一目标的一种丑陋方式:
app.post('/signup', function(req, res) {
if(typeof req.body.name !== 'string' || typeof req.body.email !== 'string' || typeof req.body.password !== 'string' ){
res.status(400).send({status:400, message: 'Invalid json post format', type:'client'});
}else{
User.findOne({
name: req.body.name
}, function(err, user) {
if (err) throw err;
if (!user) {
User.findOne({
email: req.body.email
}, function(err, user) {
if (err) throw err;
if (!user) {
//both username and email are neither in use so lets create a user
var passwordToSave = bcrypt.hashSync(req.body.password, salt);
var user = new User({
name: req.body.name,
email: req.body.email,
password: passwordToSave,
admin: false
});
user.save(function(err) {
if (err) throw err;
console.log('User created successfully');
res.json({ success: true });
});
} else if (user) {
res.json({ success: false, message: 'Signup failed. Username already in use.' });
}
});
} else if (user) {
res.json({ success: false, message: 'Signup failed. Username already in use.' });
}
});
}});
最佳答案
Json 模式标准(以及实现它的任何各种库)是一种很好的 DRY 方法。可以在客户端和服务器端进行相同的验证。更重要的是,您甚至可以使用 jdorn 的 Json 表单库从架构自动生成必需的 html 表单!
关于javascript - 如何使用 Express.js 进行正确的 JSON 后验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38771770/