检查firebase记录是否存在并返回布尔

时间:2020-06-12 23:19:13

标签: firebase flutter dart google-cloud-firestore

尝试检查Firebase记录并执行后续逻辑,

Future<bool> isAlreadyThere(selectedPropertyId) async {
 final FirebaseUser user = await FirebaseAuth.instance.currentUser();

 var myMapQuery = Firestore.instance
    .collection("props")
    .where('xxx', isEqualTo: xxxid)
    .where('yyy', isEqualTo: user.uid);
 var querySnapshot=  await myMapQuery.getDocuments();
 var totalEquals= querySnapshot.documents.length;
 return totalEquals > 0;
}

以及小部件的onTap()

bool isThere=isAlreadyThere(suggestion.documentID) as bool;
 if (isThere) {//do stuff here}

错误, 类型'Future'不是强制类型转换中'bool'类型的子类型

我知道它的强制转换,但也尝试了删除和其他一些方式,无法正常工作。

1 个答案:

答案 0 :(得分:1)

await在查询位置丢失

Future<bool> isAlreadyThere(selectedPropertyId) async {
 final FirebaseUser user = await FirebaseAuth.instance.currentUser();

 var myMapQuery = (await Firestore.instance
    .collection("props")
    .where('xxx', isEqualTo: xxxid)
    .where('yyy', isEqualTo: user.uid));
   var querySnapshot=  await myMapQuery.getDocuments();
   var totalEquals= querySnapshot.documents.length;
   return totalEquals > 0;
}

使用类似方法

isAlreadyThere(suggestion.documentID).then((value) {
     if (value) {//do stuff here}
    });