在 app.js 中,express 运行时,express 会创建池连接。然后池实例可以在其他文件中访问。如何做到这一点?
app.js
const express = require('express');
const app = express();
const port = 8080;
const mysql = require('mysql2');
const comic = require('./routes/comic');
app.use('/comics', comic);
app.listen(port, () => {
console.log(`Server is listening in ${port} port`);
const pool = mysql.createPool({
host:'localhost',
user: 'root',
password: 'test',
database: 'test'
});
exports.connection = pool.promise();
});
test.js
const {connection} = require('./app');
(async () => {
const [rows] = await connection.execute('SELECT * FROM people');
console.log(rows);
})();
答案 0 :(得分:0)
我建议您拥有一个单独的 db.js 文件,该文件将包含连接池并在必要时导入该池
在 db.js 中
const mysql = require('mysql2');
const pool = mysql.createPool({
host:'localhost',
user: 'root',
password: 'test',
database: 'test'
});
module.exports = pool;
在你想要的地方
let pool = require('./db');
const queryRes = (query, pool) => new Promise((resolve, reject) => {
pool.getConnection(function(err, connection) {
if(err) {
reject('Error');
}
connection.query(query, (err, results, fields) => {
if(err) {
reject('Error');
}
else{
connection.release();
resolve(results);
}
});
connection.on('error', (err) => {
reject('Error');
connection.release();
});
});
});
queryRes("Select * from test", pool).then(result => {
console.log(result);
}).catch(err => {
console.log(err);
});