2013-03-02 59 views
2

我有以下问题:Node.js的REST接口骨干集合

我有一个account集合在我的服务器端(猫鼬),我用快递资源的REST API。

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

MarionetteJS应用程序正在处理我的客户端收藏。

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

的一些想法,我有:

  • 将资源添加到每个对象像

    /api/organization/:organizationId/members/ 
    /api/organization/:organizationId/project/:projectId/members/ 
    
  • 添加参数的基础资源一样

    /api/accounts/?ids=id 
    
  • 抓取最大的集的帐户可能(来自组织)并获得其他子集从这个集合(客户端)。

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

  • 单一账户加载。迭代通过成员列表并获取每个成员。

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

回答

0

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

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

至于良好的做法,MongoDB是一个面向文档的数据库。为了充分利用它,请不要考虑实体和关系,并考虑他们将要提供的文档。数据复制在很多地方非常普遍。每个集合都是一种文档,因此客户每次需要某些数据时都会显示它,以获取包含所需信息的文档。

在网上寻找MongoDB模式,有很多好的来源。如果你喜欢一本书,可以看看Chodorow的权威指南或谷轮的应用设计模式。