Firebase 如何按键检索多个对象?

Firebase 如何按键检索多个对象?,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,我只是在房间里找,但什么也找不到 因此,我的web应用程序的结构与此站点中的类似 为了简单起见,假设我的应用程序只有问题,这些问题由标签分类。正如文档中所建议的,我们以一种扁平的、非规范化的结构存储数据(例如 ),而不是没有数据复制的标准化结构,如: { "questions": { "0": { "title": ..., "tag": ... }, "1": { "title": ..., "tag": ... },   } } 使用第一种结构的优点之一是,我

我只是在房间里找,但什么也找不到

因此,我的web应用程序的结构与此站点中的类似

为了简单起见,假设我的应用程序只有
问题
,这些问题由
标签分类。正如文档中所建议的,我们以一种扁平的、非规范化的结构存储数据(例如

),而不是没有数据复制的标准化结构,如:

{ 
  "questions": { 
    "0": { "title": ..., "tag": ... },
    "1": { "title": ..., "tag": ... },  
   }
}
使用第一种结构的优点之一是,我可以搜索具有特定标记的问题,而无需首先下载所有问题的所有数据:查询
/tags/tag1/questions
,将返回包含所有问题键的所有对象。现在,我可以问问题了,但我该怎么做呢

我不想对每个问题都提出十个请求,这似乎是在浪费时间和性能,但我找不到一种方法让Firebase通过多个键进行过滤。似乎我一次只能给Firebase一个输入。我想(我希望)我错过了一些东西。这是什么


如果我真的不能这样做,我该如何在这里按标签搜索

Firebase中当前不支持或查询。这是以前问过的问题,所以我可能会将其标记为其中一个的副本。通常,如果需要进行多个查询,请考虑添加索引以防止。所以在这种情况下:也存储自己的问题。数据重复在NoSQL数据库中非常常见。我刚刚意识到,您实际上并没有执行多个查询,只是访问多个子节点。直接访问节点是一种非常有效的操作,因此我不会过早地对其进行优化。@FrankvanPuffelen“不支持或查询”是否支持和查询?因为这样我就可以检索q.tags中有
tag1,q.tags中有tag2,q.tags中有tag3的问题…
等等。也许Firebase不会为这个应用程序这么做。真遗憾,因为它太简单了!不支持,也不直接支持查询。但有时您可以通过组合属性来模拟它们。看见
{ 
  "questions": { 
    "0": { "title": ..., "tag": ... },
    "1": { "title": ..., "tag": ... },  
   }
}