【问题标题】:Node.js REST Interface Backbone CollectionsNode.js REST 接口主干集合
【发布时间】:2014-02-26 22:21:41
【问题描述】:

我有以下问题:

我的服务器端 (mongoose) 上有一个 account 集合,我将 express-resource 用于 REST API。

现在我有几个其他对象(项目、组织、任务),其中包含一个成员列表(ObjectIds 数组),它们都是 account 集合的子集。

MarionetteJS 应用程序正在处理我的客户端集合。

我正在寻找一种避免调用 API 的方法。目标是通过调用 api 来获取集合。

我的一些想法:

  • 为每个对象添加资源,例如

    /api/organization/:organizationId/members/
    /api/organization/:organizationId/project/:projectId/members/
    
  • 向基础资源添加参数,如

    /api/accounts/?ids=id
    
  • 尽可能(从组织)获取最大的帐户集,并从该集合中获取其他子集(客户端)。

  • 在服务器端填充成员列表中的成员

  • 单个帐户加载。遍历成员列表并获取每个成员。

有没有一种最佳实践?我知道第一个选项可能是最好的,但也许我错过了一个选项。

【问题讨论】:

    标签: rest backbone.js marionette


    【解决方案1】:

    这完全取决于您如何构建 Mongoose 数据库。如果成员列表包含在组织、项目或任务文档中,则对文档的查询将为您提供所需的列表,而无需查找您感兴趣的特定字段。

    如果您将列表编码为不同的文档(这听起来像是一种 SQL 做法),您将需要在 Node 上设置一个新资源来获取成员列表。在这种情况下,您的第一个选项在 URL 结构方面听起来不错,但实现(在服务器端或客户端加载)取决于项目的特征。通过使用 Node,我猜你想要一个小型服务器和一个重型客户端(通常的场景),所以你最终会在客户端上做。

    就良好实践而言,MongoDB 是一个面向文档的数据库。为了充分利用它,请停止考虑实体和关系,并考虑它们将服务的文档。在许多部分重复数据是很常见的。每个集合都是一种文档,因此每次客户端想要显示一些数据时,它都会获取一个包含它需要的所有信息的文档。

    在线查找 MongoDB 模式,有很多好的来源。如果您更喜欢一本书,请查找 Chodorow 的权威指南或 Copeland 的应用设计模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 2012-10-15
      • 2013-12-29
      相关资源
      最近更新 更多