如何使用 Flutter future<bool> 检查 Firestore 中是不是存在子集合

Posted

技术标签:

【中文标题】如何使用 Flutter future<bool> 检查 Firestore 中是不是存在子集合【英文标题】:How to check if subcollection exists in Firestore with Flutter future<bool>如何使用 Flutter future<bool> 检查 Firestore 中是否存在子集合 【发布时间】:2021-01-29 20:45:06 【问题描述】:

如果存在某些子集合,我在从 Firestore 查询中返回 true/false 语句时遇到问题。

这是我的代码:

  Future<bool> checkIfCollectionExist(
      String collectionName, String productId) async 
    await _db
        .collection('products')
        .doc(productId)
        .collection(collectionName)
        .limit(1)
        .get()
        .then((value) 
      return value.docs.isNotEmpty;
    );
  

结果我得到了Future&lt;bool&gt; 的实例,但我需要true/false 的答案。 我在这里做错了什么?

【问题讨论】:

【参考方案1】:

使用

Future<bool> checkIfCollectionExist(String collectionName, String productId) async 
  var value = await _db
      .collection('products')
      .doc(productId)
      .collection(collectionName)
      .limit(1)
      .get();
  return value.docs.isNotEmpty;

或者

Future<bool> checkIfCollectionExist(String collectionName, String productId) 
  return _db 
      .collection('products')
      .doc(productId)
      .collection(collectionName)
      .limit(1)
      .get()
      .then((value) 
    return value.docs.isNotEmpty;
  );

【讨论】:

以上是关于如何使用 Flutter future<bool> 检查 Firestore 中是不是存在子集合的主要内容,如果未能解决你的问题,请参考以下文章

参数类型“Future<bool>”不能分配给参数类型“bool”

如何修复 Flutter 中的“参数类型 'Future<int>' 无法分配给参数类型 'int'”

如何使用 Flutter future<bool> 检查 Firestore 中是不是存在子集合

如何将 Future<dynamic> 转换为 dart:flutter 中的字符串

如何修复 Future<dynamic> 不是 Flutter 中类型的子类型

如何在 Flutter 中获取 Future<List> 项的某个数据索引?