Запрос к базе данных о событиях на основе друзей - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь построить временную шкалу с событиями для пользователей.

Чтобы построить эту временную шкалу, я бы запустил запрос, который выполняет следующее:

  • , возвращая все события, где друзья пользователя настроены на отправку.

Что у меня сейчас:

  • на стороне клиента: список всех идентификаторов друзей пользователя: ex , ['a', 'b', 'c', 'd', 'e']
  • на стороне сервера: коллекция Firestore со всеми событиями:

    events / eventID

    Этот документ имеет значение «идущий», который представляет собой список, который содержит все идентификаторы пользователей, которые «идут», напр. ['d', 'e', ​​'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm']

(Например, запрос должен вернуть этот документ, потому что собираются 2 друга)

Простое решение будет следующим:

Получение всех событий и сравнение 2 списков на клиенте -сторона. Проблема: нормально для 100 документов, но невозможно, если коллекция масштабируется. (Поскольку счета Firstore на документе читаются.)

Есть ли лучший способ сделать это (с помощью Firestore)?

Или это невозможно с помощью Firestore, и существуют ли другие технологии для этого?

Заранее спасибо!

1 Ответ

2 голосов
/ 07 апреля 2020

В вопросе нет кода, и я не знаю платформу, поэтому позвольте мне ответить на этот вопрос на высоком уровне.

Предположим, у нас есть коллекция 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, они добавляются в эту коллекцию событий и затем запросите коллекцию users для всех других пользователей, с которыми они дружат, с помощью вложенной коллекции friends. Затем они добавляют себя в events_where_friends_are_going, создавая событие, если оно не существует, или, если оно существует, добавляют себя в список.

В приведенной выше структуре, если Curly подписан на event_0, как показано в коллекция регистраций, запрос показывает, что они дружат с uid_0 и uid_1. Затем они добавляются в коллекцию uid_0 и uid_1 events_where_friends_are_going.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...