在索引Firebase时发送两个请求还是一个请求更好?

时间:2017-04-24 21:40:31

标签: firebase firebase-realtime-database firebase-storage polymerfire firebase-polymer

我的Firebase看起来像这样:
no module named quandl

我正在存储- widgets - abc123abc - key1: val1 - key2: val2 - key3: val3 - ... + abc123abd + ... - widgets-index - abc123abc - timestamp: 1289183274834 - abc123abd - timestamp: 1289183274834 个对象的集合,同时保留其索引的单独列表。当我使用索引视图从选定对象获取数据时,我需要获取数据对象属性的子集。

我在某处看过Firebase使用网络套接字,所以我不应该担心多次提取的性能成本?我理解正确吗?

我应该在widget节点存储整个对象属性子集,而不是单独调用widgets-index

编辑:

The solution to this problem can be found here.

1 个答案:

答案 0 :(得分:1)

Firebase实时数据库支持任意复杂的原子深度更新(博客文章)。它的工作原理如下:

您可以使用单个.update()调用更新任意深度路径 更新地图关键方面的完整路径将被替换,因此如果您不想吹走父级,则必须直接寻址子项 路径是相对于您当前的参考 所以,让我们举个例子:

var update = {};

update['emails/email3@example,com'] = {new: 'data'};
update['emails/email4@example,com'] = {new: 'data'};
update['users/c0djhbQi6vc4YMB-fDgJ/emails/email3@example,com'] = {new: 'data'};
update['users/c0djhbQi6vc4YMB-fDgJ/emails/email4@example,com'] = {new: 'data'};

firebase.database().ref().update(update);

这将同时更新所有位置。要使其动态化,只需在构造键时使用字符串插值。

免责声明:此答案是从here复制的。最初回答:@Michael Bleigh