javascript - 使用 Node.js MySQL 库的正确方法是什么?

标签 javascript mysql node.js

目前我正在使用 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/

相关文章:

javascript - WebSocket 连接到 OpenShift 应用程序失败

node.js jade - 如何在 jade 中设置内容类型

php - 如何执行包含日期函数的查询(MySQL)

javascript - 在 React 中隐藏和显示循环组件

javascript - C#函数返回一个值并显示在网页中

javascript - 如何为 ul 列表添加/删除事件类?

C# MySql参数问题

php mysql 命令不返回任何内容

node.js - 使用Application Insights : TypeError: Cannot read property 'stack' of undefined跟踪自定义错误的问题

javascript - 在文本输入中查找链接并将它们转换为 angularjs 中的 html 链接