【代码问题】这样会不会生成多个数据库连接啊
发布于 9 年前 作者 FlyerJay 3348 次浏览 最后一次编辑是 8 年前 来自 问答

#db.js var mysql = require(‘mysql’); var con = mysql.createConnection{ host : ‘xxx.xx.xxx.xxx’, user : ‘xxx’, password : ‘xxxxxx’, port : ‘3306’, }; con.connect(function(err){ if(err){ console.log(’[err]:’+err); }else{ console.log(’[connection]:succeed’); } }); exports.con = con;

#dbquery.js var db = require(’./db.js’); var connect = db.connect;

function Query(querystring,post){ connect.query(querystring,post,function(err,rows,fields){ if(err){ return {‘success’:false,‘result’:err}; }else{ return {‘success’:true,‘result’:rows}; } }); }

我没有断开数据库连接,会不会在多次调用dbquery.js的时候生成多个数据库连接。

7 回复

不会, db.js只会运行一次, 之后require得到的都是第一次运行结果的缓存, 也就是同一个连接

这个模块现在还会不会阻塞?

不会,db.js只会执行一次。但是这样写会暴露不少问题。 例如多次查询会使用同一个con,容易出问题,而且con长期处于连接状态,被断开了怎么处理,应该要对数据库连接的生命周期进行封装,或者找现成的库。

@jimliang 你的意思是每个请求都去连接一次数据库吗

@FlyerJay 一般都是这样,需要用再开一个连接,用完就关,或者使用数据库连接池来管理。

回到顶部