如何解决查询我的子集合的第一个文档的数据
我需要获取我的子集合的第一个文档(仅)的数据。
我已经尝试过第一个解决方案:
void _getOwner(accommodation) async {
await FirebaseFirestore.instance
.collection('Users')
.doc(uid)
.collection('Accommodation')
.doc(accommodation.id)
.collection('Owner')
.limit(1)
.get()
.then((value){
print(value.data());
});
}
但是我有这个错误信息:
未为类“QuerySnapshot”定义方法“data”。
- 'QuerySnapshot' 来自 'package:cloud_firestore/cloud_firestore.dart' ('../../../.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.15.0/lib/cloud_firestore.dart')。 尝试将名称更正为现有方法的名称,或定义 一种名为“数据”的方法。 打印(值。数据());
然后我尝试了这个解决方案:
void _getOwner(accommodation) async {
await FirebaseFirestore.instance
.collection('Users')
.doc(uid)
.collection('Accommodation')
.doc(accommodation.id)
.collection('Owner')
.get()
.then((QuerySnapshot querySnapshot) => {
querySnapshot.docs.forEach((doc) {
print(doc["LastName"]);
})
});
}
它有效,但我需要我的第一个所有者文档的姓氏,而不是“forEach”...我该怎么办?
解决方法
在您的部分:
.then((QuerySnapshot querySnapshot) => {
querySnapshot.docs.forEach((doc) {
print(doc["LastName"]);
})
});
querysnapshot.docs 是一个 QueryDocumentSnapshots 数组(不是最终文档),可以作为数组寻址。我警告说,“第一”的概念在 Firestore 中是一个棘手的概念 - 您应该定义自己的顺序,并在代码中使用 .orderBy()
;否则它将按照 documentID 的顺序排列,我希望,出于性能原因,它是一个伪随机代码。假设它实际上是您描述的任何顺序的“第一个”,您可以这样做:
.then((QuerySnapshot querySnapshot) => {
print(querySnapshot.docs[0].data.LastName);
});
作为一般规则,对于固定的、已知的字段名称,使用 dot(.) 表示法更好;当您需要使用变量来引用字段名时,最好使用数组符号 doc[variable]
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。