【问题标题】:How to share models between 2 or more sails projects如何在 2 个或多个 Sails 项目之间共享模型
【发布时间】:2015-02-12 18:35:55
【问题描述】:

我有两个 Sails 项目,一个网站 - 前端和一个管理后端。这些项目应该是分开的,但它们共享 api/models 文件夹。共享它们的首选方式是什么? 目前我们使用了一个单独的 git 存储库,我们将其克隆到 api/models 中(一个 git 子模块也可以工作)。我问自己这是最好的方法还是推荐的方法?

带有sails hook https://github.com/node-machine/sails-hook-machines 的sails v0.11 是否以更好的模块化方式解决了这个问题?

谢谢

【问题讨论】:

    标签: sails.js


    【解决方案1】:

    首先:

    如果两个应用程序都在一台服务器上工作,您可以将模型文件夹从一个应用程序符号链接到另一个应用程序。

    请不要这样做。这是最糟糕的 devops 黑客行为,是让您的项目无法部署的好方法。

    现在,寻求解决方案:

    在我的sails-auth 模块中,我使用标准sails 生成器并在api/models 中创建可扩展模型存根。比如这里我生成UserPassport模型:https://github.com/tjwebb/sails-auth/blob/master/index.js#L5-L6

    另一个例子也在这里:https://github.com/tjwebb/sails-permissions/blob/master/index.js#L5-L8

    实际存根如下所示:https://github.com/tjwebb/sails-permissions/blob/master/api/models/User.js#L1-L5

    sails.js 不幸的是没有这样做的约定;但上述方法在我的项目实践中效果很好。

    【讨论】:

      【解决方案2】:

      如果两个应用程序都在一台服务器上运行,您可以将模型文件夹从一个应用程序符号链接到另一个应用程序。

      如果不是(或者您的模型或其他原因存在差异)git submodules 是绝对可行的方法。 sails-hook-machines 目前不稳定,如果您想在生产中使用它,请三思。

      【讨论】:

      • 我们尝试了符号链接。仅当您的模型中没有任何依赖项/需要调用时,它才有效。如果你有一个'require(“lodash”)',节点将创建一个真实路径并在模型目录中搜索依赖项lodash。在这种情况下,您可能会考虑使用单独的 package.json 将依赖项添加到模型目录。但这行不通,因为sails 使include-all 会尝试从node_modules 目录加载每个js 文件。
      • @ThomasFritz 这是我在发布答案时没有考虑的问题。如果您的依赖项是常见的东西(例如 async 或 lodash),您可以将其放入 globals config 并让sails 在后台要求它们。否则,我好像还没有解决你的问题。就我自己而言,我为管理员和用户提供了一个风帆实例。我的用户模型具有 accessLevel 属性,并且我使用多个策略委托代码流。这很有用,因为我可以为不同的用户组使用通用方法。管理员面板也有它自己的视图基础布局。也许,这对你有帮助
      猜你喜欢
      • 1970-01-01
      • 2016-05-07
      • 2011-02-02
      • 2012-09-19
      • 2023-03-29
      • 2017-05-15
      • 2018-03-18
      • 2012-07-22
      • 1970-01-01
      相关资源
      最近更新 更多