Я такой новый для Node. Я пытался получить информацию из базы данных с помощью MySQL.
. Сначала я писал коды, которые создавали сервер, создавали соединение с БД, вызывали API в файле сервера, как показано ниже:
http.createServer(app).listen(8801, async function(){
//do something
})
router.route('/test/morphemeResultPart').get(function(req, res){
pool.query("SELECT keyword_id, keyword_name FROM tb_name_keyword_main_part WHERE language_type='ko'", function(err, rows, fields){
if(err) throw err;
res.send(rows);
})
})
Теперь я пытался разделить файл по роли каждой функции. Поэтому я создал еще один файл с именем mysql_module. js
var mysql = require('mysql');
var dao = {};
var pool;
//DB connection
dao.createPool = function(){
pool = mysql.createPool({
connectionLimit : 10,
host : '14.63.197.117',
port : '11001',
user : 'admin',
password : 'tjrqhd77',
database : 'dev_new_areyousick_algorithm',
debug : false
})
}
//trial no.1
dao.morphemeResultPart = function(res){
console.log(pool==null)
pool.getConnection(function(err, connection){
if(err){
throw err;
}
connection.query("SELECT keyword_id, keyword_name FROM tb_name_keyword_main_part WHERE language_type='ko'", [], function(err, rows){
if(err){
connection.release();
throw err;
}
console.log('rows send')
res.send(rows);
connection.release();
});
})
}
//trial no.2
dao.morphemeResultMain = function(res){
pool.query("SELECT keyword_id, keyword_name FROM tb_name_keyword WHERE language_type='ko'", function(err, rows, fields){
if(err) throw err;
res.send(rows);
})
}
module.exports = dao;
, и файл сервера выглядит следующим образом
var express = require('express'), http=require('http');
var cors = require('cors');
var app = express();
var router = express.Router();
var dao = require('./mysql_module');
const fs = require('fs');
app.use(cors());
app.options(cors());
app.get('/products/:id', function (req, res, next) {
res.json({msg: 'This is CORS-enabled for all origins!'})
});
app.use('/',router);
app.use(express.static(__dirname + '/resources'));
app.set('port', process.env.PORT || 8810);
dao.createPool();
http.createServer(app).listen(8810, function(){
//do something
})
router.route('/test').get(function(req, res){
res.writeHead(200, {'Content-Type':'text/html'});
fs.readFile(__dirname + '/searchTest.html', (err, data)=>{
if(err){
return console.error(err);
}
res.end(data, 'utf-8');
})
})
router.route('/test/morphemeResultPart').get(function(req, res){
dao.morphemeResultPart(res);
})
, и я могу получить ошибку на сервере, как этот.
/root/areyousick_node_test/areyousick_node_search/express_example/mysql_module.js:26
throw err;
^
Error: connect ETIMEDOUT
at PoolConnection.Connection._handleConnectTimeout (/root/node_modules/mysql/lib/Connection.js:409:13)
at Object.onceWrapper (events.js:417:28)
at Socket.emit (events.js:311:20)
at Socket._onTimeout (net.js:478:8)
at listOnTimeout (internal/timers.js:549:17)
at processTimers (internal/timers.js:492:7)
--------------------
at Protocol._enqueue (/root/node_modules/mysql/lib/protocol/Protocol.js:144:48)
at Protocol.handshake (/root/node_modules/mysql/lib/protocol/Protocol.js:51:23)
at PoolConnection.connect (/root/node_modules/mysql/lib/Connection.js:116:18)
at Pool.getConnection (/root/node_modules/mysql/lib/Pool.js:48:16)
at Object.dao.morphemeResultPart (/root/areyousick_node_test/areyousick_node_search/express_example/mysql_module.js:22:7)
at /root/areyousick_node_test/areyousick_node_search/express_example/express_test.js:67:6
at Layer.handle [as handle_request] (/root/node_modules/express/lib/router/layer.js:95:5)
at next (/root/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/root/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/root/node_modules/express/lib/router/layer.js:95:5) {
errorno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
fatal: true
}
Там говорится, что произошла ошибка из pool.getConnection в mysql_module. js
Пожалуйста, помогите мне! Заранее спасибо.