【问题标题】:Using Mysql with Nodejs and Express (node-mysql)将 Mysql 与 Nodejs 和 Express 一起使用 (node-mysql)
【发布时间】:2011-08-18 04:59:24
【问题描述】:

我是 node 和 express 的新手,我有一个关于 使用 mysql。 我有一个发布到“/ login”的登录表单。我正在使用 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 数据库。在那里 将其更改为 mongodb 有什么好处?

任何帮助将不胜感激

提前致谢

乔治

【问题讨论】:

    标签: mysql node.js express


    【解决方案1】:

    node-mysql 客户端对象有一个转义方法可以帮助解决这个问题。您可以手动调用它,也可以使用接受参数的查询形式。例如:

    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

    【讨论】:

    【解决方案2】:

    如果您的网站变得更加复杂,您可能会对使用 ORM 来处理您的 MySQL 内容感兴趣。 Sequelize 使用 node-mysql 库并管理完整的 sql 内容:http://sequelizejs.com

    【讨论】:

      【解决方案3】:

      这是一个好方法吗?我可以吗 继续这样?并且是sql 查询以某种方式逃逸了,还是我 必须编写该功能 我自己?

      您应该首先清理您的 SQL 查询参数。例如,利用node-validator 模块的功能来防止SQL injection attacks

      我正在重写一个网站,我使用了 mysql数据库。有什么好处吗 改成mongodb?

      一般而言,这取决于您网站的功能和其他内容。试试看this的问题。

      【讨论】:

      猜你喜欢
      • 2014-02-13
      • 2020-04-30
      • 2015-01-12
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      相关资源
      最近更新 更多