PJQ*_*Jag 2 firebase flutter google-cloud-firestore
我试图用这个函数返回文档列表的长度:
Future totalLikes(postID) async {
var respectsQuery = Firestore.instance
.collection('respects')
.where('postID', isEqualTo: postID);
respectsQuery.getDocuments().then((data) {
var totalEquals = data.documents.length;
return totalEquals;
});
}
Run Code Online (Sandbox Code Playgroud)
我在 void init 状态下初始化它(使用另一个函数调用:
void initState() {
totalLikes(postID).then((result) {
setState(() {
_totalRespects = result;
});
});
}
Run Code Online (Sandbox Code Playgroud)
但是,当它运行时,它最初返回一个空值,因为它没有时间完全完成。我试图在 Future 函数中的 Firestore 调用之前退出“等待”,但得到“仅等待期货”的编译错误。
任何人都可以帮助我理解如何在设置“_totalRespsects”状态之前等待此函数完全返回非空值?
谢谢!
Fra*_*len 10
我想你正在寻找这个:
Future totalLikes(postID) async {
var respectsQuery = Firestore.instance
.collection('respects')
.where('postID', isEqualTo: postID);
var querySnapshot = await respectsQuery.getDocuments();
var totalEquals = querySnapshot.documents.length;
return totalEquals;
}
Run Code Online (Sandbox Code Playgroud)
请注意,这会加载所有文档,只是为了确定文档数量,这是非常浪费的(尤其是当您获得更多文档时)。考虑保留一个文档,将计数作为一个字段进行维护,这样您只需阅读单个文档即可获得计数。请参阅Firestore 文档中的聚合查询和分布式计数器。
| 归档时间: |
|
| 查看次数: |
5447 次 |
| 最近记录: |