【问题标题】:Time problems when delete and add documents to Firebase删除和添加文档到 Firebase 时的时间问题
【发布时间】:2020-04-16 15:24:36
【问题描述】:

我在 Flutter 中创建了一个应用程序,并尝试在 Firebase 中刷新数据,删除旧文档并添加新文档。一个一个删除 100 个文档(整个集合)大约需要 19.158398 秒,添加 100 个文档需要 17.511311。当我执行刷新需要删除整个集合并使用新文档重新创建它之后。 这是我删除集合的所有文档的方式:

  QuerySnapshot qs = await Firestore.instance
    .collection('DOCUMENTS')
    .where('WS', isEqualTo: '${globals.qSN}')
    .limit(2)
    .getDocuments();
if (qs.documents.length > 0) {
  await Firestore.instance
      .collection('DOCUMENTS')
      .getDocuments()
      .then((snapshot) async{

    for (DocumentSnapshot doc in snapshot.documents) {
       await doc.reference.delete();
    }
  });
}

这就是我添加文档的方式:

for(var obj in object.data){

   await Firestore.instance
        .collection('DOCUMENTS')
        .add({
      'MT': '${obj.mt}',
      'CODE': '${obj.code}',
      'NAME': '${obj.name}',});}

你能帮我谈谈如何更快地做到这一点吗?等待 36 秒有点过分(在我看来)。在过去的两周里,我试图自己找到一个选项,但没有得到任何结果。

【问题讨论】:

  • 您可以通过批处理请求来加快速度。您应该将所有操作作为一个整体进行,而不是一一进行。我实际上不知道它是如何工作的,但我会开始环顾这门课Firestore.instance.batch();
  • 归根结底,你理应成为赢家。删除时间:0:00:00.757063 插入时间:0:00:00.008760

标签: firebase flutter google-cloud-firestore


【解决方案1】:

无法加速从客户端应用中删除文档。从客户的角度来看,您正在做的事情与它获得的一样快。时间可能是由于您和托管数据库的服务器之间的延迟和有限的带宽。

考虑改为在物理上更靠近存储数据的区域的服务器上编写一些后端代码。您可以通过编写您的客户端代码可以调用的Cloud Functions HTTP 触发器来做到这一点。请务必将触发器部署到与您的 Firestore 实例相同的 Google Cloud 区域。

【讨论】:

  • 但是添加文档的解决方案?
  • 如果您有新的问题或问题,请单独发布。
  • 在我的问题中,您可以看到我在删除和添加时遇到了时间问题。
  • 我看不出添加与删除有何不同 - 如果可能,将它们都放在后端。如果不可能,那么您必须接受延迟。
  • 这是你必须自己进行基准测试的东西。我不知道你和 us-central1 之间的网络质量如何。
猜你喜欢
  • 2020-03-08
  • 1970-01-01
  • 2022-08-17
  • 2014-10-15
  • 2021-04-24
  • 1970-01-01
  • 2021-08-23
  • 2023-04-05
  • 2016-05-06
相关资源
最近更新 更多