Я строю социальную сеть, используя Firebase Firestore, и у меня есть вопрос о структуре данных для функциональности, которая позволяет пользователям блокировать друг друга.
На данный момент у меня есть коллекция под названием «блокировка», в которой есть две вложенные коллекции, например:
/blocking/{uid}/userBlocking/{targetUid} <-- the uids the user is blocking
/blocking/{uid}/userBlocked/{targetUid} <-- the uids the user is blocked by
Когда пользователь просматривает профиль, я проверяю, не блокирует ли он пользователя. профиль или если профиль заблокирован пользователем, что кажется нормальным.
Тем не менее, для каждого поста мне также нужно проверить, заблокирован ли автор поста и не блокируется ли он и для каждого комментария к посту. , В списке из 25 сообщений это дополнительные 50 обращений к Firestore только для объекта публикации, и кто знает, сколько для комментариев, что кажется неоптимальным и чрезмерным для функциональности, которая, я надеюсь, будет использоваться не так часто.
Я мог бы хранить заблокированные / блокирующие uid как массивы в профиле пользователя (коллекция пользователей делает c), но это могло бы стать громоздким и раздуть документ профиля.
Как бы вы это сделали?