我应该如何使用node.js和导出来调用mysql数据库

How i am supposed to call a mysql database using node.js and exports?

本文关键字:调用 mysql 数据库 何使用 node js 我应该      更新时间:2023-09-26

我正在使用mysql数据库开发一个带有node.js、express等的API。我正在使用nodemysql连接数据库并对其执行查询。

为了有一个干净的代码,我把它分为控制器和模型。但我面临的是:

models/user.js

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  port     : 3307,
  user     : 'root',
  password : 'root',
  database : 'db'
});
User.prototype.blablabla = function() {
...
connection.query(...);
}

models/admin.js

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  port     : 3307,
  user     : 'root',
  password : 'root',
  database : 'db'
});
Admin.prototype.blablabla = function() {
...
connection.query(...);
}

问题是,我必须在每个文件上创建一个到数据库的连接,即使我只想有一个我调用的连接,当我完成后,我会关闭它。

但有了这种配置,使用我的使用回调之类的控制器,我无法关闭连接。它总是在运行。

我正在寻找一种安全的方法,只使用到数据库的连接的一个实例。这是一个好方法吗?我怎样才能做到这一点?

为这个连接信息创建一个特定的文件怎么样?

/connection.js

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  port     : 3307,
  user     : 'root',
  password : 'root',
  database : 'db'
});
module.exports = connection;

因为require缓存它加载的模块,所以连接将只打开一次。参考http://fredkschott.com/post/2014/06/require-and-the-module-system/

然后,请注意,要关闭连接,可以使用连接实例及其方法端

connection.end();

参考https://github.com/felixge/node-mysql