egg-mongoose 配置多个数据库, loadModel设置为false后,在什么地方手动加载model呢?

提问 3 242
于你 VIP1 2020/10/20
来自:四川省成都市-电信
需求:后台配置多个数据库,根据前端用户登陆时所选数据库,登陆后就只针对该数据库进行操作。

解决思路: 在model的地方return 多个不同数据库的model, 然后再从server里面单独处理需要操作哪一个。
遇到的问题: config的配置项loadModel默认是ture,即app启动时候会自动加载model,而且这个model设置返回一个数据后,识别不了该model。


因为自动加载不了多个model,所以还有一种方法,把loadModel设置为false, 然后识别到操作的数据库后,手动调用egg-mongoose插件的 loadModel方法,返回一个真正需要操作的数据库。

egg-mongoose加载源码:



其实这两个关键点在于如何手动去加载model,因为自动加载的话必须写死数据库,但是现在需求是动态的操作不同的数据库。

那么问题来了?怎么在正确的位置去手动加载对应的model呢?

有没有大佬解答一下。
回帖
  • 小伍
    小伍 2020/10/20 第1楼
    来自:北京市-电信
    楼主你好。我也遇到类似的需求了,我想动态加载集合, 暂时没有找到合适的办法, 按我的理解,mongoose 做不了动态连接,只能在操作的时候 手动连接了 ,期待大佬们给出解决方案
    回复
  • 于你
    于你 VIP1 2020/10/21 第2楼
    来自:四川省成都市-电信
    @小伍 我看了egg-mongoose的源码,找到了解决方案了,并且已经成功了,将loadModal设置false后,在app beforeStart的钩子里,稍稍修改一下egg-mongoose源码的loadmodel那个方法的判断就行了
    回复
  • 于你
    于你 VIP1 2020/10/21 第3楼
    来自:四川省成都市-电信
    @小伍 在model里面返回不需要使用的多个model对象, 改下加载的判断条件,这样就能拿到你返回的多个model对象,在server里面去做判断,看具体需要用到哪个
    回复