如何快速将对象传递给其他文件?

时间:2021-04-21 18:00:56

标签: node.js express

在 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);
})();

1 个答案:

答案 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);
});