【问题标题】:How can i get only my messages from firestore in Flutter我如何才能从 Flutter 中的 firestore 只获取我的消息
【发布时间】:2024-05-23 01:40:02
【问题描述】:

我想创建个人资料页面,当然个人资料页面必须只有 1 人的帖子。那么我们如何编写代码呢?

我的主页上有所有使用此代码的人的帖子:

@override
  Widget build(BuildContext context) {
     return StreamBuilder(
     // stream: FirebaseFirestore.instance.collectionGroup('Posts').snapshots(),
    
     stream: FirebaseFirestore.instance.collectionGroup('Posts').snapshots(),
      builder: (context, snapshotMsg) {
        if (!snapshotMsg.hasData) {
          return Center(child: CircularProgressIndicator());
        } else {
          return ListView.builder(
            itemCount: snapshotMsg.data.documents.length,
            itemBuilder: (context, index) {
              if (!snapshotMsg.hasData) {
                return Center(child: CircularProgressIndicator());
              } else {
                final dataMsg = snapshotMsg.data.documents[index];
                return FutureBuilder(
                  future: FirebaseFirestore.instance
                      .collection('Users')
                      .doc(dataMsg.reference.parent.parent.id)
                      .get(),
                  builder: (context, snapshotUser) {
                    if (!snapshotMsg.hasData) {
                      return Center(child: CircularProgressIndicator());
                    } else {
                      final dataUser = snapshotUser.data;
                      if (dataUser == null) {
                        return Center(child: CircularProgressIndicator());
                      } else {
                        return homePageCard(context,dataMsg: dataMsg, dataUser: dataUser,);
                      }
                    }
                  },
                );
              }
            },
          );
        }
      });
  }

但如前所述,此代码包含所有用户的帖子。我应该在这里改变什么才能看到我的帖子?

( 我试着 stream:FirebaseFirestore.instance.collection('Users').doc().collection('Posts').snapshots() 这段代码,但它给出了错误......)

我的火力基地截图:

【问题讨论】:

  • 你需要传入 doc(),即 docId,所以它知道去哪里找,stream:FirebaseFirestore.instance.collection('Users').doc(**AddDocId**).collection('Posts').snapshots()
  • 感谢您的评论:):)

标签: firebase flutter google-cloud-firestore


【解决方案1】:

如果您只想获取当前连接用户的帖子,您应该使用 Firebase Auth

final FirebaseAuth auth = FirebaseAuth.instance;

// Previously get the current connected user uid
    final User user = auth.currentUser;
    final uid = user.uid;

// ...

// Get the post of the current connected user
FirebaseFirestore.instance.collection('Users').doc(uid).collection('Posts').snapshots()

如果您想获取特定用户(不是连接的用户)的帖子,只需替换当前用户的 uid。

【讨论】:

    最近更新 更多