首页 > 解决方案 > Firestore中更新和排序朋友列表期间的无成本方法

问题描述

我在 Firestore 中使用了数据库非规范化。用户可以轻松地按他的名字/字母对他的朋友进行排序,而不会出现问题。此外,除非朋友禁用可见性设置,否则用户可以看到“朋友的朋友”。

User(collection)
->User ID(Doc)   -> Name: Name0
                 -> visibility: true        
                 -> Friends (sub-collection)
                     ->Friend1 ID (Doc) -> Name: friend1Name
                                        -> visibility: true

                     ->Friend2 ID (Doc) -> Name: friend2Name
                                        -> visibility: true

                     ->Friend3 ID (Doc) -> Name: friend3Name
                                        -> visibility: false

                     ->...

->User ID(Doc)  -> ...  

这种结构产生了两个问题,当用户想按姓名/字母排序朋友的朋友时,他需要调用他所有朋友的朋友(子集合)才能成功排序。所以,通话的数量直接取决于他的朋友的数量。

其次,当用户更改了他的可见性设置时,需要更新他在朋友的子集合中注册的非规范化数据的可见性。因此,如果从“云功能”触发,文档调用的数量直接取决于用户的好友数量。上述两个问题的费用都是开放式的。

如果有一个替代的无成本结构来解决 Firestore 中的这些问题,我会很高兴。

标签: firebasegoogle-cloud-firestore

解决方案


推荐阅读