Как реализовать шаблон Twitter Feed с помощью Firestore - PullRequest
0 голосов
/ 25 февраля 2019

Я имею дело с шаблоном дизайна здесь.Я создаю приложение, в котором у вас есть подписчики и подписчики.Аналогично Twitter, Instagram, x-social-network.

По сути, когда пользователь открывает представление «Домой», мне нужно вызвать функцию Firebase, которая должна получать фид активности подписчиков (например, twitter, insta).и т. д.) из базы данных Firestore.

Я думал о том, чтобы сделать что-то вроде этого:

В этом примере предположим, что пользователь A следует за пользователями B

  1. Каждый раз, когда пользователь B делает что-то, что должно быть включено в фид A, я добавляю новый объект в B.feed.Что-то вроде:

B.feed['timestampId'] = { eventType: 'new-tweet', photoId: 123123};

Когда пользователь A открывает домашний вид, я вызываю функцию FireBase "getFeed" (этот шаг не важен). Функция Firebase "getFeed" собирается получить пользователейчто A следует. Тогда для каждого A.following пользователя (в данном случае это всего лишь B) я получу объект X.feed.В этом случае: B.feed, и я верну его в приложение.

В чем здесь проблема?Если A следует за более чем 1 пользователем (скажем, B и C), здравый смысл говорит, что я должен получить .feed пользователя B и C.По-старому, с SQL, я буду делать что-то вроде «ВЫБЕРИТЕ ПОДАЧУ ГДЕ user_id IN ('B', 'C')".Но, как вы, возможно, знаете, в вызовах Firestore нет OR.

То есть я не могу этого сделать:

admin.firestore().collection('users')
  .where('id', '=', 'B')
  .where('id', '=', 'C')
  .get()

Итак, что я действительно должен сделать, так это позвонить n раз этот запрос, где n - количество пользователей, за которыми следует A.

admin.firestore().collection('users')
  .where('id', '=', 'B')
  .get()

admin.firestore().collection('users')
  .where('id', '=', 'C')
  .get()

Дождитесь всех этих обещаний и затем верните .feed всех этих вызовов.

Такое ощущение, что ... я не знаю ... Гадкий (во всех смыслах, которые вы можете себе представить).

У вас, ребята, есть лучшее представление о том, как реализовать что-то вродеэто?

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