首页 > 解决方案 > 如何仅显示当前用户的帖子?

问题描述

我正在尝试在颤振中构建一个应用程序,但我遇到了这个问题,我似乎找不到任何现有的答案。如何仅显示当前用户的帖子?我的帖子集合有一个用户 id 字段,我想将其与当前用户进行比较,并仅显示 userId 和 currentUser 相同的帖子。


 return FutureBuilder(
        future: FirebaseAuth.instance.currentUser(),
        builder: (ctx, futureSnapshot) {
          if (futureSnapshot.connectionState == ConnectionState.waiting) {
            Center(
              child: CircularProgressIndicator(),
            );
          }
          return StreamBuilder(
              stream: Firestore.instance.collection('posts').snapshots(),
              builder: (context, streamSnapshot) {
                if (streamSnapshot.connectionState == ConnectionState.waiting) {
                  Center(
                    child: CircularProgressIndicator(),
                  );
                }
                final documents = streamSnapshot.data.documents;

                return ListView.builder(
                    itemCount: documents.length,
                    itemBuilder: (ctx, index) => PostItem(
                          documents[index]['title'],
                          documents[index]['imageUrl'],
                          documents[index]['location']['address'],
                        ));
              });
        });

这是我的帖子收集结构

标签: flutterpostgoogle-cloud-firestorecompare

解决方案


您目前正在收到所有帖子:

Firestore.instance.collection('posts').snapshots()

如果您只想要当前用户的帖子,那就是:

var uid = (await FirebaseAuth.instance.currentUser()).uid;
Firestore.instance.collection('posts').where('uid', isEqualTo: uid).snapshots()

第一行确定当前用户的 UID,然后第二行使用它来仅请求其uid字段与值匹配的文档。


推荐阅读