gpt4 book ai didi

javascript - 构建 mysql+nodejs+express 应用程序的最佳方式

转载 作者:行者123 更新时间:2023-12-02 21:14:50 25 4
gpt4 key购买 nike

我使用mysql(没有sequelize)并通常在 module.export 函数中创建连接,然后我需要从其他文件中获取连接,如下所示:

var db;
module.exports={
getConnection = function (){return new Promise(function(resolve, reject){
// db = mysql connection stuff
resolve(db)
});},
//other database related operations similarly
}

现在,我想将所有内容分开,例如,我想要一个 userModel,它将具有一些与用户相关的数据库操作,这些操作将仅导入数据库连接等;但实现这一目标的最佳方法是什么?谢谢。

最佳答案

由于它的使用如此广泛并且不会带来变量命名冲突的高风险,因此我更喜欢将其添加到全局对象中。这样您就不必确保它被包含、传递或从模块导入。

考虑以下示例:

// in your application initialization file such as app.js

// require items …
const mysql = require('mysql');

const connection = mysql.createPool({
connectionLimit: 10,
host: process.env.DB_HOST || '127.0.0.1',
user: process.env.DB_USER || 'local_user',
password: process.env.DB_PASSWORD || 'local_password',
database: process.env.DB_NAME || 'local_database',
multipleStatements: true,
charset: 'utf8mb4' // necessary if you might need support for emoji characters
});

connection.on('connection', function (connection) {
// handy for testing
console.log('Pool id %d connected', connection.threadId);
});

connection.on('enqueue', function () {
// handy for testing
console.log('Waiting for available connection slot');
});

// make the connection global via the the variable db
global.db = connection;


// everywhere else in your app, use the now global db variable when running queries

db.query(
'INSERT INTO users SET ?', [{name: "John Smith"}], function(error, results, fields) {
if (error) throw error;
console.log(results);
});
}

关于javascript - 构建 mysql+nodejs+express 应用程序的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60998890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com