在用nodejs express mysql 对于mysql
var mysql = require('mysql');
var db = mysql..
db.connect();
db.query(..)
是这样写的,但是我想export出去,别的文件也能引用,不知道怎么写。
如果这样直接export db, 是不是每次引用都要重新连接数据库。求一个好的写法。还要考略mysql 断线重连的问题,谢谢。
在用nodejs express mysql 对于mysql
var mysql = require('mysql');
var db = mysql..
db.connect();
db.query(..)
是这样写的,但是我想export出去,别的文件也能引用,不知道怎么写。
如果这样直接export db, 是不是每次引用都要重新连接数据库。求一个好的写法。还要考略mysql 断线重连的问题,谢谢。
建议直接使用 NodeJS + MySQL 的 ORM 封装 Sequelize 来实现,能方便的设置连接池、保持长连接,各种数据操作都给你封装好了,程序员就是懒嘛,还用自己去连数据库?
var mysql = require('mysql');
var $conf = require('../conf/dbconf');
var pool = mysql.createPool($conf.local);
module.exports = pool;
其它文件
var pool = require('./pool');
pool.getConnection(function(err,connection){
connection.query(...);
});
仅供参考
一般要是全局依赖的话,我都是通过注入传参进去的,我自己常用的Loadder:
https://github.com/conglai/clmloader
如果这个MySQL是一个全局依赖的话,假设目录A下所有模块都会需要用到:
- 目录A
- 模块1
- index.js
- 模块2
- index.js
- 模块3
- index.js
index.js:
module.exports = function(db) {
return Promise.resolve({
test: 2
});
};
在外面:
var mysql = require('mysql');
var db = mysql..
db.connect();
...
const clmLoad = require('clmloader');
co(function*(){
let map = yield clmLoad({
path: '目录A', // absolute dir path
deps: [db], // deps pass to module function
defaultFile: 'index', // read which default file
attach: { //attach some args
common: 'xx'
}
});
})
10 回答11.2k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
exports.conn = db.connect();