Использование Mysql с Nodejs и Express (node -mysql)
Я новичок в node и выражаю, и у меня есть вопрос относительно
используя mysql.
У меня есть форма входа в систему, которая отправляется в '/login'. Im использует node -mysql
модуль.
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('/');
}
}
);
});
Это хороший способ сделать это? Могу ли я продолжить этот путь?
И запросы sql сбежали каким-то образом, или мне нужно написать, что
функциональность самостоятельно?
Последний вопрос: я переписываю сайт, и я использовал mysql db. Здесь
любые преимущества для его изменения в mongodb?
Любая помощь будет оценена
Заранее спасибо
Джордж
Ответы
Ответ 1
Это хороший способ сделать это? Могу я продолжить этот путь? И sql запросы каким-либо образом экранированы или выполняются должны написать эту функциональность сам?
Сначала вы должны сначала дезинформировать параметры SQL-запроса. Например, используя функциональность модуля node-validator, чтобы предотвратить Атаки SQL-инъекций.
Я переписываю сайт, и я использовал mysql db. Существуют ли какие-либо выгоды для изменить его на mongodb?
В целом это зависит от функциональности вашего сайта и других вещей. Попытайтесь рассмотреть этот вопрос.
Ответ 2
Объект клиента node -mysql Client имеет метод escape, который может помочь в этом. Вы можете вызвать это вручную или использовать форму запроса, которая принимает параметры. Например:
client.query('SELECT id, user_name FROM user WHERE email=?',
[req.body.login], ...
Примечание с использованием метода параметров фактически не представляет параметризованный запрос в mysql, он просто заботится о подстановке параметров и экранировании для вас.
Кстати, вот что делает побег:
https://github.com/felixge/node-mysql/blob/master/lib/protocol/SqlString.js#L3
Ответ 3
Если ваш сайт становится более сложным, вам может быть интересно использовать ORM для вашего материала MySQL. Sequelize использует node -mysql lib и управляет полным материалом sql для: http://sequelizejs.com