在Firebase中查询相关项目

时间:2018-07-15 23:52:34

标签: firebase firebase-realtime-database nosql

所以我有一个像这样的数据库结构(简化为相关项目

{
 users: {
   userId: {
     relatedContracts: [list of contract ids]
   }
 },
 contracts: {
   contractId: {
     ...contractMetaData
   }
 }
}

现在说我想获取相关合同并将其显示在用户主页上。从用户对象中,我可以获得合同ID的列表。

我可以为每个合同编写一个单独的查询,如下所示:

database.ref("/contracts/").child(contratId1).once('value')
database.ref("/contracts/").child(contractId2).once('value')

但是无论如何都可以批量处理此请求。这样,我提供了ID列表,它返回了所有相关合同。

在像这样的文档驱动的数据库中处理关系的正确方法是什么。似乎对每个关系执行一个数据库请求会不会很好地扩展?

1 个答案:

答案 0 :(得分:0)

这里没有可伸缩性问题。使用文档ID进行X文档提取总是会导致X节点查找,无论它们是否是批处理的。客户端库将请求通过管道传递到服务器,这和批处理一样好(并且还使您有机会在全部提取文档之前开始处理文档,而批处理是不允许的)。