Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 没有得到任何回应_Mysql_Node.js_Rest_Api - Fatal编程技术网

Mysql 没有得到任何回应

Mysql 没有得到任何回应,mysql,node.js,rest,api,Mysql,Node.js,Rest,Api,我正在用node.js和mysql构建一个rest api。但是在我的GET中,使用mysql的router.GET出现了一个错误“无法获得任何响应”。 这是我的代码,有帮助 server.js const http = require('http'); const app = require('./app'); const port = process.env.PORT || 3000; const server = http.createServer(app); server.listen

我正在用node.js和mysql构建一个rest api。但是在我的GET中,使用mysql的router.GET出现了一个错误“无法获得任何响应”。 这是我的代码,有帮助

server.js

const http =  require('http');
const app = require('./app');
const port = process.env.PORT || 3000;
const server = http.createServer(app);
server.listen(port);
app.js

const express = require('express');
const app = express();
const userRoutes = require('./api/routes/user');
var mysql = require("mysql");
//Database connection
app.use(function(req, res, next){
    res.locals.connection = mysql.createConnection({
        host     : 'localhost',
        user     : 'root',
        password : ' ',
        database : 'achai_db'
    });
    res.locals.connection.connect();
    next();
});
user.js

const express = require('express');
const router = express.Router();
router.get('/', function(req, res, next) {
    res.locals.connection.query('SELECT * from users', function (error, results, fields) {
        if (error) throw error;
        res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
    });
});
module.exports = router;

在该user.js中,如果我在不使用mysql的情况下使用get,连接就会工作。

您需要了解JavaScript的本质(异步编程),并且不能在每个请求中打开
mysql
连接,您可以使用连接池并保持连接打开,只需获取连接并在查询后释放它

更新的
app.js

const express = require('express');
const app = express();
const userRoutes = require('./api/routes/user');
const mysql = require('mysql');
//Database connection
const pool = mysql.createPool({
    host     : 'localhost',
    user     : 'root',
    password : ' ',
    database : 'achai_db'
});
app.use(function(req, res, next){
    pool.getConnection(function(err, connection) {
        res.locals.connection = connection;
        next(err);
    });      
});
const express = require('express');
const router = express.Router();
router.get('/', function(req, res, next) {
    res.locals.connection.query('SELECT * from users', function (error, results, fields) {
        res.locals.connection.release();
        if (error) throw error;
        //res.json({"status": 200, "error": null, "response": results});
        res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
    });
});
module.exports = router;
更新的
user.js

const express = require('express');
const app = express();
const userRoutes = require('./api/routes/user');
const mysql = require('mysql');
//Database connection
const pool = mysql.createPool({
    host     : 'localhost',
    user     : 'root',
    password : ' ',
    database : 'achai_db'
});
app.use(function(req, res, next){
    pool.getConnection(function(err, connection) {
        res.locals.connection = connection;
        next(err);
    });      
});
const express = require('express');
const router = express.Router();
router.get('/', function(req, res, next) {
    res.locals.connection.query('SELECT * from users', function (error, results, fields) {
        res.locals.connection.release();
        if (error) throw error;
        //res.json({"status": 200, "error": null, "response": results});
        res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
    });
});
module.exports = router;