【问题标题】:Reusing pg-pool via module exports通过模块导出重用 pg-pool
【发布时间】:2016-12-27 20:25:57
【问题描述】:

阅读文档:https://github.com/brianc/node-pg-pool 后,我有点担心重用new Pool() 方法。

文档建议我需要将new Pool() 放在exports 和return 之前,就像这样

// db.js
const pool = new Pool();
module.exports = () => { return pool; }

这样我可以重复使用Pool 直到idleTimeoutMillis 或client.release(),通过使用来自其他文件的require() 例如:

const connect = require('./db')
connect().query(' .... ');  

如果正确,它是如何工作的? node.js 是否缓存了new Pool(),因为它不在module.exports 内?

【问题讨论】:

    标签: node.js postgresql node-postgres node-pg-pool


    【解决方案1】:

    是的,它被有效地缓存了,因为您只创建了一次(并且节点缓存了模块),并且您总是在导出的方法中引用同一个实例。

    【讨论】:

    • 谢谢,这意味着我应该始终只导出结果而不需要依赖等...?
    • 我不明白你的问题。
    • 对不起,实际上在测试了这段代码之后,我得到了TypeError: connect.query is not a function。似乎在require() 之前没有初始化池。你知道出了什么问题吗?参考:github.com/brianc/node-pg-pool#a-note-on-instances
    • 您正在导出一个返回数据库连接的 函数,因此您需要这样做:connect().query()。
    • 谢谢,我应该怎么做才能将connect().query()写成connect.query(),除了这样做-> const connect = connect();
    猜你喜欢
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2023-02-15
    • 2018-01-25
    • 2016-01-27
    • 2015-10-21
    相关资源
    最近更新 更多