Ash*_*hir 13 javascript performance firebase
我在firebase上有以下层次结构,隐藏了一些数据以保密:
我正在尝试获取视频ID列表(红色下划线)
我只能获取所有节点,然后检测它们的名称并将它们存储在一个数组中!
但这会导致低性能; 因为dataSnapshot
在我的情况下来自firebase非常大,所以我想避免检索所有节点的内容然后循环它们以获取ID,我只需要检索ID,即没有它们的嵌套元素.
这是我的代码:
new Firebase("https://PRIVATE_NAME.firebaseio.com/videos/").once(
'value',
function(dataSnapshot){
// dataSnapshot now contains all the videos ids, lines & links
// this causes many performance issues
// Then I need to loop over all elements to extract ids !
var videoIdIndex = 0;
var videoIds = new Array();
dataSnapshot.forEach(
function(childSnapshot) {
videoIds[videoIdIndex++] = childSnapshot.name();
}
);
}
);
Run Code Online (Sandbox Code Playgroud)
我如何只检索ID以避免大量数据传输并避免循环使用重新获取的数据来获取ID?有没有办法直接检索这些ID?
Kat*_*ato 10
更新:shallow
REST API中现在有一个命令只能获取路径的键.尚未将此添加到SDK中.
在Firebase中,如果不检索下面的数据,则无法获取节点名称列表.反正还没有.可以通过规范化来解决性能问题.
从本质上讲,您的目标是将数据拆分为可消耗的块.存储您的视频密钥列表,可以在一个路径中使用标题等几个元字段,并将批量内容存储在其他位置.例如:
/video_meta/id/link, title, ...
/video_lines/id/...
Run Code Online (Sandbox Code Playgroud)
要了解有关非规范化的更多信息,请查看以下文章:https://www.firebase.com/blog/2013-04-12-denormalizing-is-normal.html
归档时间: |
|
查看次数: |
17032 次 |
最近记录: |