Я создаю приложение 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]);
},
);
},
);
Есть ли более элегантное, экономичное и экономичное решение этой проблемы, чем это?