CNode

【代码问题】这样会不会生成多个数据库连接啊

问答
FFlyerJay发布于10 年前最后回复10 年前7 回复3798 浏览0 收藏

#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)

Y
Yu1989#1·10 年前

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

C
captainblue2013#2·10 年前

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

J
jimliang#4·10 年前

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

J
jimliang#6·10 年前

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

参与回复
登录后即可参与回复。登录