Flutter Firebase:当前用户从子集合中获取数据

2024-02-22

当前用户如何仅访问他在子集合中的数据?

Stream<QuerySnapshot<Map<String, dynamic>>> myRide =
      FirebaseFirestore.instance.collectionGroup('Requests').snapshots();

 @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: StreamBuilder(
          stream: myRide,
          builder: (BuildContext context, AsyncSnapshot snapshot) {
            return Center(
              child: Text(snapshot.data['Name']),
            );
          }),
    );
  }

我也尝试过这个:

Stream<QuerySnapshot<Map<String, dynamic>>> myRide = FirebaseFirestore
          .instance
          .collection('ADS')
          .doc(FirebaseAuth.instance.currentUser!.uid)
          .collection('Requests')
          .snapshots();
      
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: StreamBuilder(
              stream: myRide,
              builder:
                  (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {Map<String, dynamic> data = snapshot.data as Map<String, dynamic>; return Center(
                  child: Text(data['Driver Name']),
                );
              }),
        );
      }

但什么也没有。我需要做什么。用户如何访问他/她的子集合?

这是针对 ListView.Builder 选项的,这给了我空白屏幕。 第二个选项给我一个错误,如红色屏幕所示

Stream<QuerySnapshot<Map<String, dynamic>>> myRide = FirebaseFirestore
      .instance
      .collection('ADS')
      .doc(FirebaseAuth.instance.currentUser!.uid)
      .collection('Requests')
      .snapshots();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: StreamBuilder(
          stream: myRide,
          builder:
              (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
            final data = snapshot.data!;
            return ListView.builder(
                itemCount: snapshot.data!.docs.length,
                itemBuilder: (context, index) {
                  return Card(
                    child: ListTile(
                      onTap: () {},
                      title: Text(data.docs[index].get('Name')),
                    ),
                  );
                });
          }),
    );
  }

stackoverflow 一直告诉我我的帖子主要是代码。所以我也必须添加这个评论。


您可以将用户 B 的 uid 存储在嵌套子集合请求中,这样您就可以使用collectionGroup https://firebase.google.com/docs/firestore/query-data/queries#collection-group-query使用用户 B 的 uid 进行查询,因为它在创建该文档时已存储。

Stream<QuerySnapshot<Map<String, dynamic>>> myRide =
      FirebaseFirestore.instance.collectionGroup('Requests').where('uid', isEqualTo: FirebaseAuth.instance.currentUser.uid).snapshots();

通过上述查询获取文档后,您可以对用户 A 的 uid 应用过滤器,并将其与当前用户 uid 进行比较,这从技术上讲可能意味着用户 B 的乘车已被用户 A(乘客)获取。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter Firebase:当前用户从子集合中获取数据 的相关文章

随机推荐