【问题标题】:flutter: check if the document existflutter:检查文档是否存在
【发布时间】:2020-04-19 13:19:47
【问题描述】:

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

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);



       });
 }   

我试过这段代码,但即使文档不存在,它也会说它存在

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore


    【解决方案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");
          });
    }
    

    【讨论】:

    • 不客气。为了帮助下一位访客,您可以接受答案。
    【解决方案2】:

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

    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)

    【讨论】:

      猜你喜欢
      • 2021-06-15
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 2012-01-08
      • 2012-07-02
      • 2020-10-12
      相关资源
      最近更新 更多