目前我正在使用 Node.js 中的 MySQL 库,但是我对使用该库的正确/最有效方式有疑问。
根据 w3schools 的说法,进行单个查询的正确方法是使用这样的代码
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "yourusername",
password: "yourpassword",
database: "mydb"
});
con.connect(function(err) {
if (err) throw err;
con.query("SELECT * FROM customers", function (err, result, fields) {
if (err) throw err;
console.log(result);
});
});
但是,假设我想进行多个查询,这些查询将由一个事件执行,例如我将如何处理这个问题?我是否应该创建一个“初始化”函数,该函数在程序运行时立即执行?
var mysql = require('mysql');
var database;
//Initialise database
function setupDatabase() {
database = mysql.createConnection({
host: token.host,
user: token.user,
password: token.password,
database: token.database,
port: token.port
});
}
//Imagine this could be called at any time after execution
function event() {
if(database != null) {
database.connect(function(err) {
if (err) throw err;
database.query("SELECT * FROM customers", function (err, result, fields) {
if (err) throw err;
console.log(result);
});
});
}
}
而且我每次进行查询时是否都必须连接到数据库,或者我可以将“database.connect”调用添加到我的 setupDatabase 函数吗?
var mysql = require('mysql');
var database;
//Initialise database
function setupDatabase() {
database = mysql.createConnection({
host: token.host,
user: token.user,
password: token.password,
database: token.database,
port: token.port
});
if(database != null) {
database.connect(function(err) {
if (err) throw err;
});
}
}
//Imagine this could be called at any time after execution
function event() {
if(database != null) {
database.query("SELECT * FROM customers", function (err, result, fields) {
if (err) throw err;
console.log(result);
});
}
}
我主要担心的是,每次我进行查询时调用 con.connect 函数会很慢,尽管这些是异步的,但我希望尽可能使用正确/最有效的方式。如果我目前只测试了第一个代码片段的最后两个代码片段的任何错误,请随时纠正我。
最佳答案
在每个应用程序的实时运行中,您只需建立一次数据库连接(除非您已断开连接)。然后您可能有任意多的查询。
只需将数据库连接例程放在单独文件中的某处,然后在您的应用程序初始化步骤中要求它。
// mysql.js
const mysql = require('mysql');
module.exports = mysql.createConnection({
host: "localhost",
user: "yourusername",
password: "yourpassword",
database: "mydb"
});
或者在任何需要数据库连接的地方都需要它——它将返回连接的数据库对象,而无需一次又一次地重新运行该代码。
// inex.js
const databse = require('./mysql')
database.query("SELECT * FROM customers")
关于javascript - 使用 Node.js MySQL 库的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50482917/