2016-08-25 5 views
1

Привет я пытаюсь проверить два значения MySQL и если его соответствие что-нибудь в базе данных она должна генерировать маркер, но это, кажется, не работает :( Everytime я запускаю этот код я получаю время соединения из:Что не так с этим экспресс-кодом?

var express = require('express'); 
var router = express.Router(); 
var mysql = require("mysql"); 
var randomstring = require("randomstring"); 
/* GET users listing. */ 
router.get('/', function(req, res, next) { 
    // First you need to create a connection to the db 
var connection = mysql.createConnection({ 
    host: "localhost", 
    user: "segfault", 
    password: "wnk9ctte2endcKzBKtre7auE", 
    database: "segfault" 
}); 
connection.connect(); 
var input_user = req.body.username; 
var input_pass = req.body.password; 
var token = randomstring.generate(12); 
connection.query('SELECT username FROM segfault.users AS username', function(err, rows, fields) { 
    if (err) throw err; 

    for(var i in rows){ 
    username = rows[i].username; 
    if(input_user == username){ 
     connection.query('SELECT password FROM segfault.users AS password', function(err, rows, fields) { 
      if(rows[i].password == input_pass){ 
       res.send("OK: "+ token); 
       console.log("OK:" + token) 
      } 
     }); 

    } 
    } 

}); 
connection.end(); 

}); 

module.exports = router; 

скажите мне, пожалуйста, что я dooing неправильно!

ответ

0

Вы закрыть соединение с базой данных, не дожидаясь результата запроса.

Move connection.end(); внутри обратного вызова после res.send.

+0

Это один из нескольких недостатков кода. – jfriend00