使用 angular $http 获取子文档

Fetching subdocuments with angular $http

假设您有嵌套集合 abc,它们遵循以下映射:

{"collection":"a",
 "children":[{"collection":"b",
              "name":"bee",
              "children"[{"collection":"c","name":"cee"}]}]}

这是 a1,使用 $http 从 MongoDb 数据库中获取:

{"title":"title a1",
 "id":"a1",
 "bee":[{"id":"b1"},{"id":"b2"}],
 "other_array":[{"foo":"bar"},{"foo":"baz"}]}

现在,在 bee 数组中,我们只有引用 (id)。我们想要的是一直跟着地图更新a1,用实际数据代替引用

这需要从数据库中获取 b1b2 数据,每个数据库可能有 cee 个数组,我们需要从 c 集合中获取其元素.

我想可以很容易地创建一个专用的后端函数,它将接受 a1,一次完成所有的抓取,return 最终结果;

但是如何使用多个 $http/$resource 调用获得 a1 的完整详细版本?

是否应该使用递归函数?

或者最好使用 $q 和链式承诺?

如何遍历地图(了解哪些集合是相关的,它们的名称是什么),检索相关的 b 项目,然后是相关的 c 项目,最后更新 a1,以便将 a1 替换为:

{"title":"title a1","id":"a1","bee":[{"id":"b1","title":"title b1","other_stuff":"blah blah","cee":[{"id":"c1","title":"title c1","c_specific":"hi there"}]},{"id":"b2","title":"title b2","other_stuff":null,"cee":[]}],"other_array":[{"foo":"bar"},{"foo":"baz"}]}

正如 benjamin Gruenbaum

评论中所建议的

making multiple http calls to fetch a single value you need will slow down your website's response time and provide a bad user experience

所以我完全放弃了这个想法,只会从数据库中获取一个文档,其中已经包含了所有嵌套数组。

我看到的唯一缺点是,当直接修改子文档时,所有包含该子文档的文档都必须手动修改。