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

Is it better to send two requests or one when indexing a Firebase?

我的 Firebase 看起来像这样:
- widgets
  - abc123abc
    - key1: val1
    - key2: val2
    - key3: val3
    - ...
  + abc123abd
  + ...
- widgets-index
  - abc123abc
    - timestamp: 1289183274834
  - abc123abd
    - timestamp: 1289183274834

我正在存储 widget 个对象的集合,同时保留一个单独的索引列表。当我使用索引视图从选定对象获取数据时,我需要获取数据对象属性的子集。

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

我应该在什么时候将对象属性的整个子集存储在 widgets-index 节点而不是单独调用 /widgets

编辑:

Firebase 实时数据库支持任意复杂的原子深度更新(博客 post)。它是这样工作的:

您可以通过一次 .update() 调用来更新任意深度的路径 更新映射键侧的完整路径将被替换,因此如果您不想破坏父键,则必须直接处理子键 路径是相对于你当前的 ref 那么让我们举个例子:

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);

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

免责声明:此答案复制自。最初回答者:@Michael Bleigh