颤动:通过查询集合中的位置获取文档

flutter: get documents by query where in collections

我有一个名为“Users”的集合,该集合中的每个文档都有一个用户的数据,但在每个文档中我创建了 2 个集合“Userdata”和“Friendslist”,在 UserData 2 文档“PrivateData”和“PublicData”如下图所示:

在 publicData 中,文档 userName

问题是:如何通过用户名获取一个用户的数据?

我试过了

QuerySnapshot querySnapshot = await FirebaseFirestore.instance
                .collection("Users/*/UserData")
                .where(
                  'UserName',
                  isGreaterThanOrEqualTo: cquery,
                  isLessThan: cquery.substring(0, cquery.length - 1) +
                      String.fromCharCode(
                          cquery.codeUnitAt(cquery.length - 1) + 1),
                  isNotEqualTo: user.name,
                )
                .get();

但我没有工作,只是从 firebase 得到了一个空列表!

从 Firestore 加载的所有数据都是浅层的,因此无法自动从子集合中获取数据。您将必须根据 QuerySnapshot.

中的文档 ID 对每个子集合执行额外的读取
querySnapshot.docs.forEach((doc) async {
  var privateRef = doc.reference.collection("UserData").doc("privateData");
  var privateDoc = await privateRef.get();
});