【问题标题】:Global mongoose models全球猫鼬模型
【发布时间】:2018-12-23 08:57:36
【问题描述】:

我正在尝试设计一个包含许多服务器的大型应用程序的后端。应该只有一个数据库(mongodb),并且所有服务器都应该连接到它。我还想以一种所有服务器都可以查询数据库中任何内容的方式设计后端。例如考虑User 模型。如果我有支付服务,它将需要查找有关用户的信息,身份验证服务等也需要。在 mongo(或在我的情况下为 mongoose)中执行此操作是将我的所有模型放在所有服务器都可以的地方看。

我想到的一个可能的解决方案是在 npm 上公开我的所有模型,然后我可以在每个服务器中要求它们,但这似乎不是一个很好的解决方案。在遵循最佳实践的情况下,我还可以采取哪些其他替代方法?

【问题讨论】:

  • 解决方案完全基于您选择的架构,如果您想应用微服务,您可以将数据模型设置为一个服务。如果要搭建monorepo,可以使用lerna或yarn workspace来管理项目,将数据模型设置为包。即使使用您的解决方案,您也不需要在 npm 上公开您的模型,npm 也可以安装私有 git repo。

标签: node.js mongodb mongoose


【解决方案1】:

在我看来,最好的方法是将它们放在私有 npm 存储库中或参考您的私有 git 存储库。

将它们放在公共空间中,imo 是自找麻烦,也会在一定程度上污染 npm,因为它应该是具有广泛使用可能性的 livray。

【讨论】:

    【解决方案2】:

    在数据库级别共享域逻辑和耦合服务对您来说可能是个坏主意,但是,如果您有坚定的信念走这条路,您可以将代码存储在单一存储库中并引导域模型在多个应用程序入口点内。

    如果您想将它们打包为私有 npm 的独立模块,您可以考虑使用 lerna 进行包管理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-05
      • 2018-03-04
      • 2018-07-15
      • 2014-12-09
      • 2018-06-23
      • 2020-09-05
      • 2016-01-23
      • 2013-01-16
      相关资源
      最近更新 更多