Я имею дело с шаблоном дизайна здесь.Я создаю приложение, в котором у вас есть подписчики и подписчики.Аналогично Twitter, Instagram, x-social-network.
По сути, когда пользователь открывает представление «Домой», мне нужно вызвать функцию Firebase, которая должна получать фид активности подписчиков (например, twitter, insta).и т. д.) из базы данных Firestore.
Я думал о том, чтобы сделать что-то вроде этого:
В этом примере предположим, что пользователь A
следует за пользователями B
- Каждый раз, когда пользователь
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
всех этих вызовов.
Такое ощущение, что ... я не знаю ... Гадкий (во всех смыслах, которые вы можете себе представить).
У вас, ребята, есть лучшее представление о том, как реализовать что-то вродеэто?