【问题标题】:Flutter Firebase Matching user dataFlutter Firebase 匹配用户数据
【发布时间】:2020-06-04 09:58:53
【问题描述】:

我正在尝试根据他们保存的音乐来匹配不同的用户。我有一个名为用户数据的集合,每个用户都有一个文档。在每个用户文档中,都有一个音乐收藏,每个音乐一个文档。

这是我尝试过的代码:

  class FindFriendsWithSameMusicTastesMatchPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final user = Provider.of<User>(context);
    String _uid = user.uid;
    String _id = "";
    Query _postRef = Firestore.instance.collection('User Data/$_uid/Music');
    Query _userRef = Firestore.instance.collection('User Data');
    Query _userSongRef = Firestore.instance.collection('User Data/$_id/Music');
    return Scaffold(
      body: StreamBuilder(
          stream: _postRef.snapshots(),
          builder:
              (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
            List<String> _list = [];
            snapshot.data.documents.forEach((element) {
              _list.add(element.documentID);
            });
            return StreamBuilder(
                stream: _userRef.snapshots(),
                builder: (BuildContext context,
                    AsyncSnapshot<QuerySnapshot> snapshot) {
                  for (var i = 0; i < _list.length; i++) {
                    snapshot.data.documents.forEach((element) {
                      _id = element['uid'];
                      return StreamBuilder(
                          stream: _userSongRef.snapshots(),
                          builder: (BuildContext context,
                              AsyncSnapshot<QuerySnapshot> snapshot) {
                            if (snapshot.hasData) {
                              snapshot.data.documents.forEach((elementBis) {
                                print(elementBis.documentID);
                                if (elementBis.documentID == _list[i]) {
                                  print(_id);
                                  return Container();
                                } else {
                                  return Container();
                                }
                              });
                            }
                            return Container();
                          });
                    });
                  }
                  return Container();
                });
          }),
    );
  }
}

我很乐意接受任何人的帮助。谢谢!

【问题讨论】:

  • 请提供数据结构以获得帮助。

标签: android firebase flutter google-cloud-firestore


【解决方案1】:

请正确地改写问题以提及您的问题。同样在这里使用三个流构建器来匹配收听相同数据的用户有点过度工作。

相反,您可以只保留一个单独的音乐收藏,您可以在其中存储收听每个音乐文档的用户的 uid 列表。将此与 firestore 数组查询结合使用,以仅获取存储了您的 uid 的那些记录。

【讨论】:

  • 是的,它肯定更好,而且,它有效!谢谢!
猜你喜欢
  • 2020-10-18
  • 2016-11-09
  • 2021-08-21
  • 2021-03-05
  • 2019-10-02
  • 2022-01-18
  • 2020-12-31
  • 2018-09-11
  • 2021-02-09
相关资源
最近更新 更多