使用 angular $http 获取子文档
Fetching subdocuments with angular $http
假设您有嵌套集合 a
、b
和 c
,它们遵循以下映射:
{"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
,用实际数据代替引用
这需要从数据库中获取 b1
和 b2
数据,每个数据库可能有 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"}]}
评论中所建议的
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
所以我完全放弃了这个想法,只会从数据库中获取一个文档,其中已经包含了所有嵌套数组。
我看到的唯一缺点是,当直接修改子文档时,所有包含该子文档的文档都必须手动修改。
假设您有嵌套集合 a
、b
和 c
,它们遵循以下映射:
{"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
,用实际数据代替引用
这需要从数据库中获取 b1
和 b2
数据,每个数据库可能有 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"}]}
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
所以我完全放弃了这个想法,只会从数据库中获取一个文档,其中已经包含了所有嵌套数组。
我看到的唯一缺点是,当直接修改子文档时,所有包含该子文档的文档都必须手动修改。