在Firestore中获取较少读取的朋友列表数据

问题描述 投票:2回答:1

我的项目是在Ionic 3,Angular和Firestore。由于Firestore的成本取决于读取的数量,我有以下关注。

我有以下用户结构。

User(collection)
    ->User ID(Doc)   -> Name:
                     -> Photo URL:
                     -> Friend (collection)
                            ->Friend ID (Doc) -> statue: Active
                            ->Friend ID (Doc) -> statue: Inactive
    ->User ID(Doc)  -> ...

按照这个结构,如果我想显示我的朋友列表...

  1. 我将为所有活跃的朋友查询Friend系列。 (这是一读)
  2. 我必须循环(读取)所有ID以获得他们的NamePhoto URL

所以如果用户有200个朋友。只显示数据需要200次读取。有没有更好的方法?

ionic-framework google-cloud-firestore
1个回答
0
投票

解决方案是使用database denormalization:您在Friend文档中复制了所需的信息(例如name和photoURL)。这样,在读取时,您拥有显示所需内容的所有数据。当然,有一个权衡。在朋友更新后,您必须更新所有相关文档或使用过时信息。但是,您的用例似乎比写入更多读取。因此,应用非规范化应该不是一个大问题。

© www.soinside.com 2019 - 2024. All rights reserved.