在javascript中读取sql查询输出

时间:2014-09-11 02:48:14

标签: javascript mysql node.js express pug

我正在尝试在javascript中读取SQL查询输出 我使用Node.js,Express Engine(MVC模型)来读取MySQL数据库并使用Jade在UI上显示输出。

我有一个文件index.js,它取值'密码'和来自homepage.jade表单字段的' user_name' 我必须检查用户输入的密码是否与数据库中的密码匹配。 我正在查询数据库以获取输入用户名的匹配记录,并希望获取该用户的密码值并检查它是否等于密码的表单值。

router.get('/sample', function(req, res) {


db=mysql.createConnection(config);
    db.connect(function(err){

    });

var formpass= req.body.password;
var user_name= req.body.userName;
var sql="select * from user where user_name= 'monicathaneer'";

    db.query(sql, function(err_query,data)
{

for a in data
pass= a.password;
}

    if(formpass==pass)
    {
        res.render('Login', {
        "Login" : data  });

     }
});

我收到错误消息称附近的意外令牌是' a'和意外的令牌附近'如果'当我运行节点。 我想知道如何从.js文件中的sql输出中读取密码属性。

1 个答案:

答案 0 :(得分:0)

您的代码示例存在一些语法错误并且丢失了大括号。试试这个(假设您正在使用node-mysql模块):

router.get('/sample', function(req, res) {

  var formpass = req.body.password,
      user_name = req.body.userName,
      sql = "select * from user where user_name = 'monicathaneer'";
  var db = mysql.createConnection(config);

  db.connect(function (err) {
    // you should handle the errors here
  });

  db.query(sql, function (err_query, data) {

    // I'm assuming your query will return just 1 row
    // because usernames should be unique
    if (formpass === data[0].password) {
        res.render(
          'Login',
          {"Login": data}); // In your context, 'data' contains the user password...
                            // Do you really want to send it back to the web page?
    }
  });

  db.end(); // you forgot to close your connection.
});

一些注意事项:

  • 您不应尝试手动处理身份验证。考虑使用像Passport.js;
  • 这样的中间件
  • 您无需在每个请求中打开和关闭连接。尝试重构代码,以便在应用启动时打开连接,并按需使用它。