目前,我正在使用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")
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句