Проблемы со временем при удалении и добавлении документов в Firebase - PullRequest
0 голосов
/ 16 апреля 2020

Я создал приложение во Flutter и пытаюсь обновить sh данные в Firebase, удаляя старые документы и добавляя новые. Удаление 100 документов (всей коллекции) по одному занимает у меня около 19,158398 секунд, а добавление 100 документов - 17,511311. При выполнении refre sh необходимо удалить всю коллекцию, а после воссоздать ее с новыми документами. Вот как я удаляю все документы из коллекции:

  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 секунд - это слишком много (на мой взгляд). Я пытался найти вариант самостоятельно в последние две недели, но у меня ничего не получилось.

1 Ответ

3 голосов
/ 16 апреля 2020

Нет способа ускорить удаление документов из клиентского приложения. То, что вы делаете, происходит так же быстро, как и с точки зрения клиента. Вероятно, это связано с задержкой и ограниченной пропускной способностью между вами и серверами, на которых размещается ваша база данных.

Вместо этого рассмотрите возможность написания некоторого внутреннего кода на сервере, который физически расположен ближе к региону, где хранятся данные. Вы можете сделать это, написав Облачные функции HTTP-триггер, который может вызвать ваш клиентский код. Обязательно разверните триггер в том же регионе Google Cloud, что и ваш экземпляр Firestore.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...