我有一个针对多个数据库的应用程序,就像一个监视应用程序的应用程序,该应用程序以无法静态控制的方式(在配置文件中)进行报告,中介通知,运行任务和填充。可以启动一个监督多个Repo的主管,只需要更改opts中的设置即可完成操作(我想在一个存储库中,类似这样的声音,听起来很疯狂,我知道),但是这是不可能的,因为Ecto.Repo有一个可以建立连接的宏绑定(bind)到Repo的模块,因此,有一种方法可以满足我的需要重写Ecto.Repo?我查看了ecto的消息来源,但没有发现单独挖掘解决方案的信息。

我还查看了this post,但该应用程序可能会针对具有不同用户,不同凭据等的多个实例。

我已经找到了使用Code.eval即时创建Repos的解决方案,但我不知道它的“好”程度,以及是否受到鼓励。

最佳答案

如果您知道需要访问的所有存储库,我建议将应用程序拆分为更多的伞形应用程序。每个雨伞应用程序都可以连接到不同的ecto存储库。

作为一个好习惯,我总是提取与Ecto和数据库相关的代码,以分隔由域分隔的伞形应用程序。您可以在此演示应用程序中看到一个示例:https://github.com/silviurosu/elixir-umbrella-ddd

关于elixir - Ecto中的多个数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39070549/

10-12 20:48