Sequelize的实例没必要共用吗?
小白初学者,不要见笑~
看到很多文章,在使用sequelize的时候,一般新建一个连接数据库的文件,例如db.js
,里面new Sequelize()
并导出sequelize实例。每个model都是一个单独的文件,每个文件都需要导入db.js
。
请问,这样是不是会反复建立新的连接?谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
其实你这个问题和会不会重复建立连接池无关,而是和CommonJS模块加载相关的问题;
如果你了解koa,你可以像我这样写一个demo,去体会commonJs的加载过程
然后在router中去引用上面两个处理函数:
最后你去访问,然后发现,date的只会声明一次,而且404和hello两个文件,指向的是同一个date,发现他们打印的时间戳完全一样;所以,并不会出现你想的那种情况;
结论是:commonJs不同文件加载同一个模块,这个模块只会被声明一次,下一次加载时,其实加载的是这个文件的缓存;done!!!
理论上来说,一个事务处理一件事情,一个连接可以有多个事务。
但是连接尽量使用连接池来管理,用完即回收(到连接池)。
至于 Sequelize 是怎么处理连接池这个问题,我没去研究,印象中它是有连接池管理功能的。
从模块的角度来说,多次引用并不会直接产生多个实例,所以理论上如果你在
db.js
里建立连接,那么多次import
也不会有多个连接。