2

我有以下问题:

我的服务器端(猫鼬)上有一个account集合,我使用 express-resource 来获取 REST API。

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

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

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

我有一些想法:

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

    /api/organization/:organizationId/members/
    /api/organization/:organizationId/project/:projectId/members/
    
  • 将参数添加到基本资源,例如

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

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

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

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

4

1 回答 1

0

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

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

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

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

于 2014-02-26T14:21:41.043 回答