【问题标题】:Nodejs Mysql connection pooling using mysql module使用 mysql 模块的 Nodejs Mysql 连接池
【发布时间】:2014-12-21 11:58:53
【问题描述】:

我们正在为节点使用 mysql 模块,我只是想知道这种方法是好还是它对我们的应用程序有任何不良影响,考虑这种情况

dbPool.getConnection(function(err, db) {
    if(err) return err;
    db.query()

这里我调用 dbPool 对象并从池中请求连接,然后使用它。但是我发现了另一种实现(这是我要问的那个),它直接使用 dbPool 对象,例如:

dbPool.query('select * from test where id = 1' function(err, rows) {})

所以我想知道第二个实现究竟做了什么,它会自动返回一个免费连接并使用它吗?可以解释在第二种情况下到底发生了什么,如果它对我的应用程序有任何影响+或-?谢谢。

【问题讨论】:

    标签: mysql database node.js node-mysql


    【解决方案1】:

    这就是所谓的回调链接。在 NodeJS 中,你有很多异步调用。但有时你想在与 MySQL 的连接完成后做一些事情。这就是getConnection 功能具有callBack 功能的原因。

    dbPool.getConnection(function(err, db) {
        if(err) return err;
        db.query()
    

    等于:

    dbPool.query('select * from test where id = 1' function(err, rows) {})
    

    dbPool.query() 将等待连接打开,您不必将所有查询都放在 getConnection 中以使其工作。这就是为什么它还具有回调功能的原因。

    如果我错了,请告诉我。我希望这能解决你的问题。

    【讨论】:

    • 实际上它工作正常没有问题,但我在谈论实现本身我的意思是池对象(dbPool)是为了为您返回到您可以使用的 mysql 的免费连接它查询数据库,但我怎么能使用池对象本身而不等待它返回一个空闲连接?
    • 最好使用一个连接是的,但这会降低您查询数据库的灵活性,因为您只能在打开连接时进行。
    猜你喜欢
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 2015-11-01
    • 2020-12-22
    • 1970-01-01
    相关资源
    最近更新 更多