颤动firebase检查集合是不是为空
Posted
技术标签:
【中文标题】颤动firebase检查集合是不是为空【英文标题】:flutter firebase check if collection is empty颤动firebase检查集合是否为空 【发布时间】:2021-11-02 04:55:50 【问题描述】:我在我的 Flutter 应用程序上使用 Firestore,我在 ListView 中获取数据。我想知道如何检查集合是否在 Firestore 上没有文档?
编辑:
StreamBuilder<QuerySnapshot>(
stream: db.collection('favorite_encheres').snapshots(),
builder: (context, AsyncSnapshot snapshot)
if (QuerySnapshot.size == 0)
return Container(
.
.
.
)
else
return ListView
(
.
.
)
【问题讨论】:
【参考方案1】:没有单独的操作来检查集合是否存在。集合在其中有文档时自动存在,并在删除最后一个文档时消失。
如果您已经将数据加载到 StreamBuilder
中,您可以检查 QuerySnapshot.size
是否大于 0。
如果您不需要加载所有数据,而只是想知道集合中是否存在任何文档,您可以使用limit
为 1 的查询。如果没有结果,您就知道集合是空的。
【讨论】:
我在使用 QuerySnapshot.size 时出错,“无法使用静态访问实例成员 'size'”我刚刚编辑了帖子并添加了我的代码,你介意检查一下吗size
属性存在于QuerySnapshot
类的特定实例上,因此在您的代码中为snapshot.size
。
我替换了它,现在我收到此错误“没有为类型 'AsyncSnapshotsnapshot
是 AsyncSnapshot
,而 size
是在 QuerySnapshot
上定义的(如前所述)。我强烈建议自己学习导航这些类型,但在您的代码中应该是:if (snapshot.hashData && snapshot.data.size == 0)
。【参考方案2】:
你可以像这样检查Collection是否退出
Future<bool> _isCollectionExits() async
QuerySnapshot<Map<String, dynamic>> _query =
await FirebaseFirestore.instance.collection('collectionPath').get();
if (_query.docs.isNotEmpty)
// Collection exits
return true;
else
// Collection not exits
return false;
你可以这样使用
bool _isCollExits = await _isCollectionExits();
【讨论】:
以上是关于颤动firebase检查集合是不是为空的主要内容,如果未能解决你的问题,请参考以下文章