首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查某个特定文档是否存在或不存在,触发Firebase

检查某个特定文档是否存在或不存在,触发Firebase
EN

Stack Overflow用户
提问于 2021-03-17 16:36:57
回答 1查看 159关注 0票数 0

我是个新手,我正在尝试开发一个应用程序,如果用户有类似于我们在facebook上看到的“友谊”,他们就会互相发布帖子。

但是,当我试图使用下面的逻辑检查文档时:

B

代码语言:javascript
复制
ool friendship =false;
  checkConnection(String target) async{

   await FirebaseFirestore.instance.collection("users").doc(loggedUser.phoneNumber).collection("friendship").where("phoneNumber", isEqualTo: target).get().then((value) {
      if(value.docs.first.exists)
        friendship=true;
        else
        friendship=false;
    });

  }

,然后使用streambuilder显示posts

代码语言:javascript
复制
StreamBuilder(
        stream: FirebaseFirestore.instance.collection("posts").snapshots(),
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            return snapshot.data.docs.length == 0
                ? noPosts()
                : ListView.builder(
                    itemCount: snapshot.data.docs.length,
                    itemBuilder: (context, index) {
                      DocumentSnapshot currentDoc = snapshot.data.docs[index];
                      checkConnection(currentDoc["by"]);
                         friendship?singlePostWidget(currentDoc["by"],currentDoc["context"]):SizedBox();
                    });
          } 

我得到的错误是:

E/颤振(15767):错误:flutter/shell/公用/shell(242) Dart未处理异常:坏状态:无元素,堆栈跟踪:#0

List.first (飞镖:核心补丁/可生长的_array.dart:332:5)E/颤振(15767):#1 _CommunityState.checkConnection。(package:connect/Screens/Account/Community/Community.dart:119:21) E/颤振(15767):#2 _RootZone.runUnary (飞镖:异步/zone.dart:1612:54)E/颤振(15767):#3

_FutureListener.handleValue (dart:异步/未来_INST.DAT:152:18)E/颤振(15767):#4

Future._propagateToListeners.handleValueCallback (dart:异步/未来_INST.DAT:704:45)E/颤振(15767):#5

Future._propagateToListeners (飞镖:异步/未来_隐式飞镖:733:32)E/颤振(15767):#6 Future._completeWithValue (飞镖:异步/未来_:539:5)E/颤振(15767):#7

_completeOnAsyncReturn (文件包: Query.get /src/query.dart)E/Query.get (15767):E/颤振(15767):

EN

回答 1

Stack Overflow用户

发布于 2021-03-17 17:17:38

不要同时使用awaitthen。从第一个代码块删除等待。

等待是指中断流程流,直到异步方法完成为止。但是,不要中断流程流(意味着下一个指令将被执行),而是允许您在异步方法完成时运行代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66677379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档