не мог получить ответ

0

Я создаю rest api с node.js и mysql. Но в моем GET я получаю сообщение об ошибке "Не могу получить никакого ответа" с router.get, который использует mysql. Вот мой код, он помогает.

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, если я использую get без использования mysql, соединение работает.

Теги:
rest

1 ответ

0

Вам нужно понять природу 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);
    });      
});

обновленный 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) {
        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;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню