我的登录应用程序无法正常工作(nodejs)

时间:2018-03-16 18:36:52

标签: javascript sql node.js

当我输入我的登录名和密码时,应用程序冻结并且浏览器正在加载。我在ejs文件中输入我的登录名和密码。 有人能告诉我为什么sql后的代码不能正常工作吗? 我的js代码:

var express = require('express');
var ejs = require('ejs');
var bodyParser = require('body-parser');
var mysql = require('mysql');

var connect = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "",
    database: "artbook"
});

var app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({
    extended: true
}));
app.get('/', function(req, res){
    res.render('./index');
});
app.post('/', function(req, res){
    console.log(req.body.login + req.body.password);
    connect.connect(function(err){
        connect.on('error', function(err) {
            console.log("mysql error",err);
        });
        var sql = 'SELECT imie FROM konta WHERE imie = "'+req.body.login+'" AND nazwisko = "'+req.body.password+'";'
        connect.query(sql, function (rows, err){
            connect.on('error', function(err) {
                console.log("query error",err);
            });
            for(var i in rows) {
                if(req.body.login === rows[i].imie && req.body.password === rows[i].nazwisko){
                    console.log('done');
                    res.render('./login')
                } 
            }
        });
    });
});

app.listen(3000);
console.log('Port serwera: 3000');

2 个答案:

答案 0 :(得分:0)

connect.query()中的回调函数参数错误顺序。第一个参数是错误,第二个参数是结果,第三个(可选)是字段。 应该是 -

connect.query(sql, function(error, rows){
    if (error) throw error; // do your thing with error
    //results
    console.log(rows); 
})

按照文档here

进行操作

此外,从您的API中,如果出现错误并在客户端(浏览器)处理错误响应,则必须发送错误响应。

答案 1 :(得分:0)

    var express = require('express');
var ejs = require('ejs');
var bodyParser = require('body-parser');
var mysql = require('mysql');

var connect = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "",
    database: "artbook"
});

var app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({
    extended: true
}));
app.get('/', function(req, res){
    res.render('./index');
});
app.post('/', function(req, res){
    console.log(req.body.login + req.body.password);
    connect.connect(function(err){
        connect.on('error', function(err) {
            console.log("mysql error",err);
        });
        var sql = 'SELECT imie FROM konta WHERE imie = "'+req.body.login+'" AND nazwisko = "'+req.body.password+'";'
        connect.query(sql, function (err, rows){
            connect.on('error', function(err) {
                console.log("query error",err);
            });
            for(var i in rows) {
                if(req.body.login === rows[i].imie && req.body.password === rows[i].nazwisko){
                    console.log('done');
                    res.render('./login')
                } 
                console.log(rows[i].imie + rows[i].nazwisko);
            }
        });
    });
});

app.listen(3000);
console.log('Port serwera: 3000');`enter code here`
相关问题