Utilisation de Mysql avec Nodejs et Express (node-mysql)
Im nouveau à nœud, express et j'ai une question concernant
l'utilisation de mysql.
J'ai un formulaire de connexion qui publie "/login". Im en utilisant le nœud-mysql
le module.
app.get('/site', function(req, res){
if (req.session.is_logged_in === true) {
res.render('site/start', {
title: 'News'
});
} else {
res.redirect('/');
}
});
app.post('/login', function(req, res){
client.query('SELECT id, user_name FROM user WHERE email="' + req.body.login + '" AND password="' + Hash.sha1(req.body.password) + '"',
function (err, results, fields) {
if (err) {
throw err;
}
if (results[0]) {
req.session.userInfo = results[0];
req.session.is_logged_in = true;
res.render('site/start', {
title: 'News'
});
}
else {
res.redirect('/');
}
}
);
});
Est-ce une bonne façon de le faire? Puis-je continuer de cette façon?
Et sont le sql des requêtes sur échappés d'une certaine façon, ou dois-je écrire que
la fonctionnalité de moi-même?
Dernière question: Im la réécriture d'un site, et j'ai utilisé les bases de données mysql. Sont là
tous les avantages de la modifier pour mongodb?
Toute aide serait appréciée
Merci d'avance
George
source d'informationauteur georgesamper
Vous devez vous connecter pour publier un commentaire.
Vous devez désinfecter votre requête SQL paramètres en premier. Par exemple en utilisant la fonctionnalité de nœud-validator module afin de prévenir Les attaques par injection SQL.
En général, il dépend de la fonctionnalité de votre site et d'autres choses. Essayez de regarder cette question.
Le nœud-Client mysql objet possède une méthode d'échappement qui peut vous aider avec ceci. Vous pouvez soit appeler manuellement, ou utilisez le formulaire de requête qui accepte des paramètres. E. g:
Note à l'aide du paramètre de la méthode n'a pas fait de soumettre une requête paramétrée pour mysql, il faut juste des soins du paramètre de substitution et d'évasion pour vous.
BTW, voici ce que la fuite n':
https://github.com/felixge/node-mysql/blob/master/lib/protocol/SqlString.js#L3
Si votre site devient de plus en plus complexe, vous pourriez être intéressés par l'utilisation d'un ORM pour votre MySQL choses. Sequelize utilise le nœud-mysql lib et gère le sql complète des trucs pour: http://sequelizejs.com