0

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

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

这里是a1从 MongoDb 数据库中获取的$http

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

现在,在bee数组中,我们只有引用 ( id)。我们想要的是继续跟随地图更新a1,并用实际数据替换引用。

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

我想人们可以很容易地创建一个专用的后端函数,它会接受a1,一次完成所有的获取并返回最终结果;

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

是否应该使用递归函数?

还是最好使用 $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"}]}
4

1 回答 1

0

正如benjamin Gruenbaum在评论中所建议的那样,

进行多次 http 调用以获取所需的单个值会减慢网站的响应时间并提供糟糕的用户体验

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

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

于 2015-02-08T15:11:37.727 回答