当前位置: 首页 > 知识库问答 >
问题:

修复读取数据计数不匹配文档查询计数

赵正雅
2023-03-14

我在尝试计算firestore读取计数时遇到了一些问题。firestore的读取计数总是以非常高的速度激增(每次我重新加载页面时,读取计数都会增加100个),尽管只有大约15个用户。即使我没有重新加载页面,firestore读取计数也会自动上升,这是因为订阅行为导致读取数据操作不时刷新吗?(我读过一些文章,建议如果用户只想提取一次数据,就使用“一次”)。

下面是代码片段(ts):

  // All buddy users from Firebase
  private usersCollection: AngularFirestoreCollection<Profile>;
  users: Observable<Profile[]>;
  usersFirebase: Profile[] = [];

getUserDataFromFirebase() {
  this.isImageLoading = false;
  this.users.subscribe(async results => {
      var ref;
      for(let result of results) {
        if(result.imageName) {
          ref = this.store.ref('images/' + result.userId + '/profiles/' + result.imageName);
        } else {
          // Get default image is image not existing
          ref = this.store.ref('images/ironman.jpg');
        }
  
        await ref.getDownloadURL().toPromise().then(urlString => {
          result.profileURL = urlString;
          // Change availibility date from timestamp to date format
          try {
            result.availability = this.datePipe.transform(result.availability.toDate(), 'yyyy-MM-dd');
          } catch (error) {}
          result.flip = 'inactive';


            if(result.identity == 'Tenant')
            {
              this.usersFirebase.push(result);
            }
            return new Promise((resolve, reject) => {
                resolve();
              })
        });
      }
      console.log(this.usersFirebase);
    });
  }

firestore读取计数是如何工作的?计数增量是基于文档查询的吗?它会在一定时间后继续查询自己吗?Firestore读取计数的增长超过用户文档的增长

共有1个答案

范弘亮
2023-03-14

读取计数集中在检索的文档数量上。

让我们设置这4个场景:

  • 一个10个用户的集合,你运行一个集合("用户"). get()调用:你将得到10个员工文档,并收取10次读取的费用。
  • 一个10,000个用户的集合,你运行一个集合("用户"). get()调用:你将得到10,000个用户,并收取10,000次阅读的费用。
  • 一个10,000名员工的集合,你运行一个集合("用户"). get(). limited(10)调用:你将得到10个用户,并收取10次读取的费用。
  • 10,000个用户的集合,其中15个名为Carl,并且您运行一个集合(用户),其中(first_name", "==", "Carl)调用,您将获得4个用户,并收取15次读取的费用。

另一方面,如果您正在监听整个集合用户(没有哪里()或. orderBy()子句),并且您有一个活动的onSnapshot()监听器,那么每当在集合用户添加、更改或删除新文档时,您将被收取文档读取操作的费用。

在检查读取操作时,您可能需要查看工作流,以检查其他进程是否正在对集合进行更改。

最后,需要记住的是,报告中的读取操作可能与计费和配额使用不匹配。公共问题跟踪器中有一个功能请求是针对该查询实现的——请在这里的Firest:上阅读。您可以“启动”它,并设置通知以获取更新。此外,如果需要,您可以创建一个新的。

 类似资料:
  • 问题内容: 我在和中遇到以下问题: 我调用以下javascript方法: 来自firebug的链接将如下所示: 根据以下链接: 错误:Sys.ParameterCountException:参数计数不匹配。 我设置 但我得到另一个错误 IE中不存在此问题。 编辑: 问题答案: 可能值得包装数据:用引号引起来的项目 变成

  • 我有一个如下的实体 错误消息实体如下所示 我使用hibernate标准从数据库中获取所有记录 @SuppressWarnings(“unchecked”) @Override 公共列表listTableOneEntites() { 标准条件=getSession().createCriteria(TableOneEntity.class); 返回(列表)标准。列表(); } 当我打印列表的大小时,

  • 这个问题真的让我很沮丧。我很长一段时间都想找到一个解决方案,但无论我在哪里试图找到人们提出的相同问题,他们要么想要一些不同的东西(比如这里或这里),要么得不到解决问题的答案(比如这里)。 我需要什么 我想知道我的搜索总共有多少命中,与所使用的查询类型无关。我说的不是您总是从ES得到的命中数,也就是为该查询找到的文档数,而是匹配我的查询的文档特征的出现次数。< br >例如,我可以有两个带有文本和文

  • 所有的查询条件不区分调用顺序,但必须在调用Get,Exist, Sum, Find,Count, Iterate, Rows这几个函数之前调用。同时需要注意的一点是,在调用的参数中,如果采用默认的SnakeMapper所有的字符字段名均为映射后的数据库的字段名,而不是field的名字。

  • 在使用Micronaut数据执行显式查询(@query)时,是否可以给出一个countQuery示例来实现分页?在中没有示例https://micronaut-projects.github.io/micronaut-data/latest/guide/#explicitQueries 我必须提出一个如下的问题

  • 我在用阿帕奇凤凰和HBase。但是即使是像count(*)这样的简单查询也需要大约2-3秒。 这是预期的响应时间还是我漏掉了什么。