基于好友动态的事件数据库查询



我正在尝试为用户构建一个包含事件的时间线。

为了构建这个时间线,我将运行一个执行以下操作的查询:

  • 返回用户的朋友设置要去的所有事件

我现在拥有的:

  • 客户端:用户朋友的所有id列表:例如[‘a’,‘b’,‘c’,‘d’,‘e’]
  • 服务器端:包含所有事件的Firestore集合:

    events/eventID

    此文档的值为"going",它是一个列表,包含所有正在"进行"的用户ID,例如[ded'、'e'、'f'、'g'、'h'、'i'、'j'、'k'、'l'、'm']

(例如,查询应该返回此文档,因为有两个朋友要去(

一个简单的解决方案是:

获取所有事件并比较客户端上的2个列表。问题:100个文档可以,但如果收集规模扩大,则不可能。(因为Firstore票据在单据上显示。(

有没有更好的方法(使用Firestore(?

或者Firestore不可能做到这一点,还有其他技术可以做到吗?

提前感谢!

问题中没有代码,我也不了解平台,所以让我从高层回答这个问题。

假设我们有一个users集合:

users
uid_0
name: Larry
friends:
uid_1: true
uid_2: true
events_where_friends_are_going:
event_0:
uid_1: true
uid_2: true         
uid_1
name: Moe
friends:
uid_2: true
events_where_friends_are_going:
event_0:
uid_2: true
uid_2
name: Curly

假设我们在一个集合中存储了一系列事件:

events
event_0
name: "some event"
signups:
uid_1: true
uid_2: true //Curly signed up

过程是,当用户注册某个事件(例如event_0(时,他们会被添加到该事件集合,然后通过friends子集合在users集合中查询他们是朋友的所有其他用户。然后,他们将自己添加到events_where_friends_are_ging中,如果事件不存在,则创建该事件;如果存在,则将自己添加到此列表中。

在上面的结构中,如果Curly注册了event_0,如注册集合中所示,则查询显示他们与uid_0和uid_1是朋友。然后将它们添加到uid_0和uid_1 events_where_friends_are_ging集合中。

最新更新