我是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
据我所知,如果存在错误,则应显示该错误。是不是但是在这里,没有显示错误。请帮助我解决此错误
答案 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 。
所有三个控制台:
数据库中存在的数据
代码:
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");
});
希望它会起作用!