当前位置: 首页 > 知识库问答 >
问题:

如何将Firestore子集合中的数据添加到列表中?

梁宏才
2023-03-14
FirebaseFirestore _firestore = FirebaseFirestore.instance;
  CollectionReference _userRef = FirebaseFirestore.instance.collection('users');
Future getFriends() async {
    List<Map> info = [];
    await _firestore
        .collection('friends')
        .doc('lUb3VEzLQsqxxEhwO3nU')
        .collection('friends')
        .get()
        .then((QuerySnapshot querySnapshot) {
      querySnapshot.docs.forEach((element) async {
        print("hello " + element.id.toString());
        await _userRef.doc(element.id).get().then((value) {
          print("lalala" + value.data().toString());
          info.add(value.data());
        });
      });
    });
    print(info.toString());
  }

如果有人能在这里帮助我,我会非常喜欢它:)

共有3个答案

穆飞星
2023-03-14

问题似乎是将子集合转换为列表。尝试以下操作:

FirebaseFirestore _firestore = FirebaseFirestore.instance;
  CollectionReference _userRef = FirebaseFirestore.instance.collection('users');
Future getFriends() async {
    List<Map> info = [];
    await _firestore
        .collection('friends')
        .doc('lUb3VEzLQsqxxEhwO3nU')
        .collection('friends')
        .get()
        .then((QuerySnapshot querySnapshot) {
      querySnapshot.docs.forEach((element) async {
        print("hello " + element.id.toString());
        await _userRef.doc(element.id).get().then((value) {
          print("lalala" + value.data().toString());
          info.add(Map(Map.fromMap(value.data())));
        });
      });
    });
    print(info.toString());
  }
唐宏壮
2023-03-14

我认为问题是您根本没有返回Future中的任何内容。

试试这个

FirebaseFirestore _firestore = FirebaseFirestore.instance;
  CollectionReference _userRef = FirebaseFirestore.instance.collection('users');
Future getFriends() async {
    List<Map> info = [];
    await _firestore
        .collection('friends')
        .doc('lUb3VEzLQsqxxEhwO3nU')
        .collection('friends')
        .get()
        .then((QuerySnapshot querySnapshot) {
      querySnapshot.docs.forEach((element) async {
        print("hello " + element.id.toString());
        await _userRef.doc(element.id).get().then((value) {
          print("lalala" + value.data().toString());
          info.add(value.data());
        });
      });
    });
    return info ;
  }
姬坚成
2023-03-14

您可以通过snapshot.data.documents访问文档,然后您可以获得这样的文档ID

var doc= snapshot.data.documents;
var docId=doc[index].documentID 
FirebaseFirestore.instance
              .collection('dishes')
              .doc(docId)
              .collection('ingredients')
              .snapshots(),
 类似资料:
  • 问题内容: 没有关于如何在Firestore中的文档中添加子集合,如何使用Web应用程序添加子集合的文档? 甚至像这样尝试过,但没有奏效。如何使用代码在应用程序中添加子集合?有什么办法可以做到,还是使用Firebase实时数据库会更好?如果是这样,请让我知道如何在Firebase中执行此操作,我也想这样添加, 但我却收到这样的错误,错误说明了这一点 问题答案: 如果更改为,您的代码应该可以工作。然

  • 我正在尝试使用android studio中的Firestore制作一个课程添加系统。 当用户添加一个课程时,它将被添加到Fi还原中,并且在该课程集合中会有一个学生和教师集合。 但我不知道怎么做。 如果我为学生和教师集合编写代码,它会添加两个不同的集合,但我希望在一个课程集合中有两个集合,学生和教师。 我该怎么做呢? 我分享我写的代码。 添加课程类

  • 问题内容: 我试图基于一个的数据创建“ n” 。我正在检查in的Integer值,并循环执行sql语句以创建与列中一样多的“ n” 。 这是我的代码: 我需要创建“ n”,但我不知道如何在循环之前声明类型并在for内填充。 现有数据类型: 新的数据类型: 问题答案: 您可以创建一个可变列表并填充它: 但是更好的方法(不使用可变数据结构)是将整数列表 映射 到DataFrames列表中:

  • 我一直在从firestore的子集合中获取数据。我在下面附上我的代码脚本以供参考。 现在我从特定的子集合中获取数据。使用此查询行 其工作正常,并返回数据。 但我想从组文档中获取所有数据。 下面的链接附上了我的数据库图片。 Firestore数据库映像

  • 很容易将列表列表转换为数据帧: 但是我如何将df转换回列表列表呢?

  • 我的目标是从用户输入的“AM”-“PM”字符串格式打印包含24小时十进制格式的进入和退出时间的列表,如以下字符串数组:{6AM#8AM,11AM#1PM,7AM#8PM,7AM#8AM,10AM#12PM,12PM#4PM,1PM#4PM,8AM#9AM} 我在for循环中声明了各个列表,并在循环中为它们赋值,但从代码中得到了以下运行时异常:java。lang.IndexOutOfBoundsEx