【问题标题】:A "clean" way to use a different ORM (such as node-orm2) in Sails.js?在 Sails.js 中使用不同 ORM(例如 node-orm2)的“干净”方式?
【发布时间】:2014-01-31 08:05:06
【问题描述】:

我正在审查 node.js 的各种框架,我现在正在通过编写一个小型 CRUD 应用程序来测试 Sails.js。我想知道是否有一种优雅的方式来使用不同于sails 所包含的ORM。

我在 Sails.js 的文档中没有看到任何关于使用不同 ORM 的内容。尝试使用不同的 ORM 时,是否有任何“集成的”非 ORM 特定功能可能会丢失?

【问题讨论】:

  • 你的意思是水线吗?
  • 是的,我想使用与水线不同的 ORM。可能是orm2。
  • 只有撕掉 50% 的核心并更换它才有可能,水线就像帆最重要的部分,如果你不想要它,那么你就不要帆。对不起:)

标签: node.js sails.js


【解决方案1】:

水线应该被认为是帆的核心部分。没有任何简单的方法可以用不同的 ORM 替换它。在 Sails.js 的 google 小组中,Mike McNeil(sails 的创建者)承认 Sails 目前不是为支持在不同的 ORM 中交换而构建的[1]。

“[...]我完全愿意扩展 Sails 以支持其他 ORM[...]”

[1]https://groups.google.com/d/msg/sailsjs/jmR36bD-Zys/-F0ZFy1Q1IoJ

【讨论】:

    【解决方案2】:

    在即将发布的 Sails v0.10 版本中,钩子和生成器已被打破,可以轻松更换以支持您想要使用的任何 ORM。

    社区将能够编写 ORM 加载器来替换 Waterline ORM 加载器和生成器,以便为您选择的 ORM 生成正确格式的模型。还需要编写自定义蓝图控制器以与 ORM 对话。

    这是一项繁重的工作,但一旦发布了稳定的 v0.10,就会开始发生一些事情。

    【讨论】:

      【解决方案3】:

      我在此处编写了在整个帆(v0.10、v0.9.8)中始终禁用水线的步骤:https://stackoverflow.com/a/21612024/3263412

      如果不替换 orm 钩子,您肯定会失去 Sails 的大部分功能,至少在开发出粒子香蕉描述的生态系统之前:

      • 发布订阅
      • 蓝图和休息路线(但可以轻松解决)
      • 模型脚手架
      • 自定义适配器

      另一方面,我认为为 node-orm2 或 sequelize 编写 orm 钩子以及其他 Sails 钩子可能需要正常工作的外观并不会太难。

      【讨论】:

        猜你喜欢
        • 2016-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-12
        相关资源
        最近更新 更多