У меня проблемы с firebase при использовании запроса cloudtore .where.Я хочу запросить большую коллекцию документов (в моем случае сообщений), но я хочу только запросить сообщения, в которых groupId соответствует любой из групп, в которых находится пользователь. Причина этого заключается в том, что я хочу запросить объединенныйФид для пользователя со всеми последними релевантными данными (используя orderBy и limit).
Я знаю, что могу использовать массив-содержимое, поэтому я мог бы, например, запросить все сообщения для пользователя, где пользователь являетсяmember.
firebase.db.collection('posts').where('members','array-contains',firebase.uid)
Это сработало бы, если бы я решил отслеживать участников в группе.Проблема в том, что если бы я менял участников в группе, мне пришлось бы перебирать все сообщения и менять массив участников (не очень хорошая практика).Лучше было бы, чтобы сообщение содержало и идентификатор группы, в которой оно было опубликовано.
Итак, предположим, что у пользователя есть массив, содержащий все группы, в которых он находится
user.groups = ['companyGroup', '{id}', '{id2}']
Затем я бы хотел запросить всю коллекцию сообщений и получить все документы, где поле groupId соответствует любому из значений в user.groups примерно так:
firebase.db.collection('posts').where('groupId','==',[any of user.groups])
или, может быть, наоборот:
firebase.db.collection('posts').where(user.groups,'array-contains','groupId')
^ Я не пробовал этот, но я уверен, что он не работает в соответствии с документами согласно
Метод where () принимает три параметра: поле для фильтрации, операцию сравнения и значение.Сравнение может быть <, <=, ==,>,> = или array_contains.
Есть ли возможный способ сделать что-то подобное?Я не могу на самом деле запросить несколько местоположений одновременно и объединить их, потому что это лишает цели возможности ограничивать поля data и orderBy.Я понимаю, что мог бы поместить новую коллекцию под названием feed для каждого пользователя, и для каждого сообщения использовать функцию firebase, которая подталкивает публикацию к соответствующему каналу участников (только id и latestActivity), но затем, как только это сообщение изменится (яЯ собираюсь использовать поле с именем latestActivity для упорядочения данных в соответствии с релевантностью, а также при удалении сообщения). Мне нужно было бы перебрать все документы под каждым пользователем и изменить значение / удалить документ.
Любые идеис благодарностью!