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

时间:2017-10-31 16:33:40

标签: ionic-framework google-cloud-firestore

我的项目是在Ionic3,Angular2和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
  3. 所以如果用户有200个朋友。只显示数据需要200次读取。 有没有更好的方法?

1 个答案:

答案 0 :(得分:0)

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