Ich versuche eine korrekte Postvalidierung zu erreichen, die mit Express.JS eloquent und DRY ist. Was ist der beste Weg, dies richtig zu machen?Wie können Sie eine JSON-Post-Validierung mit Express.js durchführen?
Hier ist ein Code abgeschnitten wo ich versuche sicherzustellen, dass diese POST-Route nicht den Node.js-Server abstürzen und ist typsicher. Aber ich fühle, dass dies eine hässliche Art und Weise, dies zu erreichen:
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.' });
}
});
}});
Werfen Sie einen Blick auf jsonschema: https://www.npmjs.com/package/jsonschema –