根据this的答案,Firestore引用不能用于类似JOIN的查询,即,在一个数据库往返中检索引用文档和被引用文档。这可能是一个性能问题,因为网络延迟成本适用于每个数据库往返。
只有在您不靠近数据中心的情况下,网络延迟才是问题,这意味着如果您在服务器端进行连接,即在运行Firestore的Google数据中心中进行操作,那应该不是问题。
我们可以使用Firebase函数以一般方式实现此功能吗?我正在考虑在Firebase Functions中实现的一项服务,该服务位于客户端和数据库之间。大多数查询只是传递到数据库(where
,orderBy
,limit
等仍然必须可行),但是应该有一个附加的populate: true
查询参数。如果存在此参数并将其设置为true,则也会返回引用的文档。
也许还需要指出哪些文档应该populate
d。
答案 0 :(得分:2)
当然,您可以尝试一下。即使您没有将太多文档返回给客户,您仍然可以期望为使用任何查询而阅读的所有文档付费。
如果确实有很多要执行的联接,通常最好预先计算另一个集合中的联接,然后让客户端查询。然后,您可以利用客户端具有本地缓存的优势,这有助于提高速度和成本。
但是,如果您需要的话,并没有阻止您实现此功能的功能。