Node Express MySql Sql查询不起作用

时间:2019-01-22 08:27:25

标签: mysql node.js express

我是Node Express的新手,我尝试通过遵循一些教程来学习它

以下代码段工作正常 显示

  

Express服务器在端口号3000上成功运行。

const mysql = require("mysql");
const express = require('express');
var app = express();
const bodyparser = require('body-parser');

app.use(bodyparser.json());


var mysqlConnection = mysql.createConnection({
    host:'localhost', 
    user:'root',
    password:'',
    database:'employeedb'
});

mysqlConnection.connect((err)=>{
  if(!err)
  console.log('DB connection succeded.');
  else
  console.log('DB connection failed \n Error : '+ JSON.stringify(err,undefined,2));
});

app.listen(3000,()=>console.log('Express server is running under port no : 3000'));

然后我尝试在以下代码段中运行

app.get('/ab',(req,res)=>{
    console.log("test1");
  mysqlConnection.query('SELECT * FROM employee',(err,rows,fields)=>{
     console.log("test2");  
     if (!err){
     console.log(rows);
      res.send(rows);
  }
     else{
     console.log(err);
   }
  })

console.log("test3");

});

问题是浏览器需要很长时间才能显示响应并显示

  

localhost没有发送任何数据。 ERR_EMPTY_RESPONSE

但是在终端中仅打印了test1和test3

据我所知,如果存在错误,则应显示该错误。是不是但是在这里,没有显示错误。请帮助我解决此错误

4 个答案:

答案 0 :(得分:0)

您是否曾尝试在调用get请求时连接数据库?

app.get('/ab',(req,res)=>{
  mysqlConnection.connect((err)=>{
    if(!err){
      console.log('DB connection succeded.');
      mysqlConnection.query('SELECT * FROM employee',(err,rows,fields)=>{
          console.log("test2");  
...

答案 1 :(得分:0)

尝试缩小可能性,将查询更改为...

选择*来自员工限制1

您当前正在返回employee表中的所有记录,这可能需要比请求超时更长的时间。只需返回1条记录即可开始。

答案 2 :(得分:0)

您的代码中没有 bug /错误。我已经在系统中尝试过并获得完全相同的输出。 PFA

所有三个控制台:

enter image description here

数据库中存在的数据

enter image description here

代码:

const mysql = require("mysql");
const express = require('express');
var app = express();
const bodyparser = require('body-parser');

app.use(bodyparser.json());


var mysqlConnection = mysql.createConnection({
    host:'localhost', 
    user:'root',
    password:'root',
    database:'employeedb'
});

mysqlConnection.connect((err)=>{
  if(!err)
  console.log('DB connection succeded.');
  else
  console.log('DB connection failed \n Error : '+ JSON.stringify(err,undefined,2));
});
app.get('/ab',(req,res)=>{
  console.log("test1");
mysqlConnection.query('SELECT * FROM employee',(err,rows,fields)=>{
   console.log("test2");  
   if (!err){
   console.log(rows);
    res.send(rows);
}
   else{
   console.log(err);
 }
})

console.log("test3");

});


app.listen(3000,()=>console.log('Express server is running under port no : 3000'));

答案 3 :(得分:0)

您只需为DB创建一个新变量,然后为查询调用DB变量。 然后,您的代码段如下所示:

const mysql = require("mysql");
const express = require('express');
var app = express();
const bodyparser = require('body-parser');

app.use(bodyparser.json());


var mysqlConnection = mysql.createConnection({
    host:'localhost', 
    user:'root',
    password:'',
    database:'employeedb'
});

const db = mysqlConnection.connect((err)=>{
  if(!err)
  console.log('DB connection succeded.');
  else
  console.log('DB connection failed \n Error : '+ JSON.stringify(err,undefined,2));
});

app.listen(3000,()=>console.log('Express server is running under port no : 3000'));

然后仅出于您的目的调用db

app.get('/ab',(req,res)=>{
    console.log("test1");
  db.query('SELECT * FROM employee',(err,rows,fields)=>{
     console.log("test2");  
     if (!err){
     console.log(rows);
      res.send(rows);
  }
     else{
     console.log(err);
   }
  })

console.log("test3");

});

希望它会起作用!