【问题标题】:Angular with Nosql DBAngular 与 Nosql DB
【发布时间】:2016-05-05 02:56:19
【问题描述】:

是否建议仅使用 Angular 作为前端并使用 CouchDB/Cloudant 或 MongoDB 作为数据库来构建应用程序,因为这些数据库可以直接提供 JSON 数据?如果我不使用 Java、Node 或 PHP 中的任何中间件,它会起作用吗?我想使用 Angular 和任何 nosql 数据库。

【问题讨论】:

    标签: angularjs node.js ibm-cloud nosql


    【解决方案1】:

    您可以在技术上仅使用 AngularJS 调用 DBaaS 的 REST API 来开发全栈应用程序,并且它会工作。但是,您不应该这样做,原因如下:

    • 您的所有业务逻辑都将在客户端运行,这意味着任何人都可以使用 FireBug 或每个浏览器中包含的开发者工具
    • 您会在哪里放置和管理您的数据库访问凭据?
    • 你会得到一个很难管理的代码,不容易适应未来的变化

    记住规则高内聚,松耦合

    一般来说,出于上述所有原因,您应该始终拥有某种服务器端逻辑层(如果您熟悉 M-V-C 框架,则为“控制器”)以及开发安全 可重用可维护代码。如果您需要在业务逻辑中实现更改,则转到 API 代码,如果您需要更改整个持久性机制,则必须编辑服务器-数据库交互,而不是 UI 等等……否则以后的每一次更改会影响整个应用程序。保持具有不同职责的独立模块是一种很好的做法(我们如何表示数据?需要执行什么?我们如何呈现结果?)。

    【讨论】:

      【解决方案2】:

      您始终可以在前端使用 Angular,在后端使用任何服务器端语言。关于直接连接 - 您可以直接查询数据库。每个数据库都有一个 REST API,使您能够直接从客户端与其通信。例如,MongoDB 有这个:https://docs.mongodb.org/ecosystem/tools/http-interfaces/ 希望这可以帮助。 如果是可取的?这是一个意见问题,需要辩论。

      【讨论】:

      • 这很可能是不可取的。您不希望在客户端代码中管理数据库凭据,或者在您使用的数据库发生更改时需要重写 UI。
      • 您可以根据自己的需要来决定。你是对的,现在你可能会在你和数据库之间使用套接字或其他一些带有服务器的 api。另一方面,REST api 的存在是有原因的。
      • 感谢 yccteam 的回答。很有帮助。
      【解决方案3】:

      我同意这很诱人,但令人沮丧。我确实在我自己的家庭自动化 Web UI(实际上是 angularjs)中实现了它,它使用 REST 和 JSON 直接与 RavenDB 对话。

      非常适合原型设计,并且在有限的受控环境中也可以接受,但我最终切换到“中间人”API 层来处理一些无聊的细节,比如安全性(尽管在我的情况下,我还引入了 signalR 实时库,所以它是一个UX 优势,而不仅仅是技术优势)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-11
        • 1970-01-01
        • 1970-01-01
        • 2011-03-16
        • 2019-11-09
        • 2014-08-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多