Firebase Firestore: список запросов пользователей понравился мой профиль - PullRequest
0 голосов
/ 26 сентября 2018

Я создаю приложение Flutter с Firebase Firestore.Я пытаюсь реализовать функцию «лайки» с некоторыми ограничениями платформы.

У меня есть коллекция users.У каждого пользователя есть коллекция likedUsers, где я храню uid понравившихся пользователей.Также у каждого пользователя есть коллекция «likeBy», в которой я храню uid других пользователей, которым понравился текущий пользователь.

Firestore не позволяет выполнять запрос группы сбора, поэтому я не могу получить всех пользователей, у которых есть uid текущего пользователя в его коллекции likedUsers.

Что я могу сделать, это только получить список пользователей uid из коллекции текущего пользователя 'likesBy' и получить пользователей одного за другим, например так:

final QuerySnapshot querySnapshot = await _db
    .collection(FirebaseContract.USERS_COL)
    .document(uid)
    .collection(User.LIKED_BY_COL)
    .getDocuments();


querySnapshot.documents.forEach(
  (DocumentSnapshot snapshot) {
    _db.collection(FirebaseContract.USERS_COL).document(snapshot.documentID).get().then(
      (DocumentSnapshot document) {
        print(document[User.NAME]);
      },
    );
  },
);

Есть ли более элегантное, экономичное и экономичное решение этой проблемы, чем это?

1 Ответ

0 голосов
/ 27 сентября 2018

На данный момент мобильный API Firestore не обрабатывает запросы по массивам ссылок (будь то коллекции или документы):

Получение списка коллекций невозможно с помощью библиотек мобильных / веб-клиентов,Вы должны искать имена коллекций только как часть административных задач в доверенных серверных средах.Если вы обнаружите, что вам нужна эта возможность в библиотеках мобильных / веб-клиентов, рассмотрите возможность реструктуризации ваших данных, чтобы имена подколлекций были предсказуемыми.

Документация Firestore

Это означает, что единственный способ получить массив коллекций из их ссылок - это перечислить способ, которым вы это делаете.

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