颤动:通过查询集合中的位置获取文档
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();
});
我有一个名为“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
.
querySnapshot.docs.forEach((doc) async {
var privateRef = doc.reference.collection("UserData").doc("privateData");
var privateDoc = await privateRef.get();
});