【问题标题】:Firebase Firestore: query list of users liked my profileFirebase Firestore:查询喜欢我的个人资料的用户列表
【发布时间】:2019-03-02 16:44:15
【问题描述】:

我正在使用 Firebase Firestore 构建 Flutter 应用。我正在尝试实现喜欢功能的错误,但遇到了一些平台限制。

我有一个集合users。 每个用户都有likedUsers 集合,我在其中存储了uids 的喜欢用户。此外,每个用户都有“likedBy”集合,我在其中存储 uids 的其他用户喜欢当前用户。

Firestore 不允许运行集合组查询,因此我无法在其likedUsers 集合中获取当前用户的uid 的所有用户。

我能做的只是从当前用户的'likedBy'集合中获取用户uids的列表,并像这样一一获取用户:

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]);
      },
    );
  },
);

对于这个问题,还有比这更优雅、更省时、更经济的解决方案吗?

【问题讨论】:

    标签: firebase flutter google-cloud-firestore


    【解决方案1】:

    目前,Firestore 移动 API 不处理引用数组(无论是集合还是文档)的查询:

    使用移动/网络客户端库无法检索集合列表。您应该只在受信任的服务器环境中将集合名称作为管理任务的一部分进行查找。如果您发现在移动/Web 客户端库中需要此功能,请考虑重组您的数据,以便子集合名称是可预测的。

    Firestore documentation

    这意味着从它们的引用中获取集合数组的唯一方法是枚举您执行此操作的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 2011-05-26
      • 1970-01-01
      • 2018-07-27
      相关资源
      最近更新 更多