【问题标题】:Firestore: Error: 4 DEADLINE_EXCEEDED: Deadline exceededFirestore:错误:4 DEADLINE_EXCEEDED:已超过截止日期
【发布时间】:2020-04-28 23:45:37
【问题描述】:

我试图查询的 firebase 集合实际上是空的。里面的零文件。即使这样,在查询它时,我也会收到此错误

我在 AWS 上的 LAMBDA 函数中执行此操作。我知道该查询有效,因为它有时会返回结果,但它是非常随机的。大多数情况下它只是提出了这个错误

这是我的 lambda 日志,其中打开了以下 ENV 变量 GRPC_TRACE=全部 GRPC_VERBOSITY=调试

我什至试过这个,因为我在网上某个地方找到了这个,但没有任何区别

db.settings({
  clientConfig: {
    interfaces: {
      'google.firestore.v1.Firestore': {
          methods: {
            RunQuery: {
              timeout_millis: 5 * 60 * 1000
            }
          }
        }
      }
    }
});

这是我的查询代码的样子

let snap = await db.collection('notifications').where("siteID", "==", msg.siteId).where("procCode", "==", code).where("aptNum", "==", msg.affectedRows[0].after.AptNum).get();

这是我最终得到的输出。甚至不是在同一个 lambda 执行中,而是在一个单独的执行中,这也很奇怪。

【问题讨论】:

  • 我建议您搜索此错误消息,因为它经常出现,而且您可能会遇到一些众所周知的 Firestore 限制。
  • 我已经这样做了,我在进行了广泛的研究并按照帖子中的建议尝试了很多在网络上发现的东西后发布了这个。

标签: firebase aws-lambda google-cloud-firestore grpc


【解决方案1】:

我知道我的问题出在哪里。我在异步函数中调用 Firebase API,但该函数的调用者并没有“等待”导致这种情况的调用。现在一切正常。

【讨论】:

  • 谢谢。我仔细检查了我的代码,也发现了我自己的错误。
  • 我刚刚偶然发现了一个类似的问题。那么你是如何阻止/等待插入调用函数的呢?在我的情况下,调用者,即 firestore insert() 没有被阻止。
  • 我不确定我是否完全理解您的问题,但正如我在上一条评论中提到的那样,我只需在函数调用前添加“等待”即可。
  • 我在删除文档时遇到了类似的问题,但我的删除函数调用中有await。有什么想法吗?
猜你喜欢
  • 2019-09-26
  • 2021-06-26
  • 1970-01-01
  • 2018-03-25
  • 2017-07-07
  • 2018-03-21
  • 2021-02-12
  • 2020-06-05
相关资源
最近更新 更多