颤动:检查文档是否存在

时间:2020-04-19 13:19:47

标签: firebase flutter dart google-cloud-firestore

我要检查文档是否存在,如果不存在则不创建文档

Checked() {   
Future<DocumentSnapshot> check =  linkref.
   document(user.UID).
   collection("Requests").
   document(uuid).get();
   return FutureBuilder(
       future: check,
       builder: (context, ccheck) {
         if (check != null ) {
           return Text("Available");
         }
         return Text("not available);



       });
 }   

我尝试了此代码,但是即使该文档不存在,它仍表示存在

2 个答案:

答案 0 :(得分:1)

您应该使用; if (ccheck.data.exists),而不是if (check != null )。这是代码;

Checked() {
  Future<DocumentSnapshot> check =
      linkref.document(user.UID).collection("Requests").document(uuid).get();
  return FutureBuilder<DocumentSnapshot>(
      future: check,
      builder: (context, ccheck) {
        if (ccheck.data.exists) {
          return Text("Available");
        }
        return Text("not available");
      });
}

答案 1 :(得分:0)

您可以使用 .where( field, isEqualTo: 查询)。这可能对您有用。

final userRef = FirebaseFirestore.instance.collection('users');

checkExists(String query) async {
  QuerySnapshot checker = await userRef
      .where('uid', isEqualTo: query)
      .get();

  chkr.docs.forEach((doc) {
    if (doc.exists) {
      print('Exists');
      print(doc.get('uid'));
    }else {
      print('false');
    }
  });
}

然后,如果您使用按钮,则可以使用 onPressed: () => check(yourQuery)