Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js REST接口主干集合_Rest_Backbone.js_Marionette - Fatal编程技术网

Node.js REST接口主干集合

Node.js REST接口主干集合,rest,backbone.js,marionette,Rest,Backbone.js,Marionette,我有以下问题: 我在服务器端(mongoose)有一个帐户集合,我使用express资源作为RESTAPI 现在我有了几个其他对象(项目、组织、任务),其中包含一个成员列表(objectid数组),它们都是account集合的子集 一个木偶应用程序正在处理我的客户端集合 我正在寻找一种避免调用API的方法。目标是通过调用api来获取集合 我有一些想法: 向每个对象添加资源,如 /api/organization/:organizationId/members/ /api/organizatio

我有以下问题:

我在服务器端(mongoose)有一个
帐户
集合,我使用express资源作为RESTAPI

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

一个木偶应用程序正在处理我的客户端集合

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

我有一些想法:

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

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

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

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

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


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

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

如果将列表编码为不同的文档(听起来像SQL实践),则需要在节点上设置一个新资源以获取成员列表。在这种情况下,就URL结构而言,您的第一个选项听起来不错,但是实现(在服务器端或客户端加载)取决于项目的特征。通过使用Node,我想您需要一个小型服务器和一个大型客户机(通常情况下),因此最终将在客户机上完成这项工作

至于良好实践,MongoDB是一个面向文档的数据库。为了更好地利用它,停止思考实体和关系,思考他们将提供的文档。在许多部分重复数据是很常见的。每个集合都是一种文档类型,因此每当客户机需要显示某些数据时,它都会获取一个包含它所需的所有信息的文档

在线寻找MongoDB模式,有很多好的来源。如果你喜欢一本书,可以看看乔多罗的权威指南或科普兰的应用设计模式