Код 9: Запланированный экспорт Firebase — «Запрошенная версия моментального снимка слишком старая».

#javascript #firebase #google-cloud-firestore #google-cloud-functions

# #javascript #firebase #google-облако-firestore #google-облачные функции

Вопрос:

Я столкнулся с новой ошибкой, которая недавно произошла. В рамках функции резервного копирования по расписанию я просматриваю копию каждого хранилища данных и сохраняю в корзине для последующего использования. Следующий синтаксис хорошо работал в течение последнего года, однако, я подозреваю, что из-за нагрузки, теперь перестал работать.

 async function getDataStore(collection) {
  return admin.firestore().collection(collection).get()
    .then(querySnapshot => {
      if (querySnapshot.size == 0) {
        console.log('No matching request for: '   collection);
        return []
      } else {
        const data = [];

        //Query snapshot line throwing snapshot too old error.
        querySnapshot.forEach(doc => {
          let data_temp = doc.data();
          data_temp.doc_id = doc.id;
          data.push(data_temp);
        });

        return data;
      }
    });
}
 

Теперь выдается код 9, запрошенная версия моментального снимка слишком старая. Один из способов, который я могу придумать, чтобы преодолеть это, — разделить запрос на более мелкие «куски» и сохранить. тем не менее, я хотел посмотреть, есть ли что-то более эффективное, чего мне может не хватать. Свежий взгляд всегда полезен.

Спасибо

Комментарии:

1. Пожалуйста, отредактируйте вопрос, чтобы указать строку кода, которая вызывает проблему. В идеале в вопросе должно быть достаточно информации, которую любой желающий может использовать для воспроизведения проблемы.

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

3. имея ту же проблему, вы уже нашли решение @Dan?

4. @Thomas — способ, которым я избежал этой проблемы, заключался в том, чтобы выполнить пакетный запрос с использованием пула обещаний. Я сделал только 500 запросов на запрос, и, выполнив итерацию через единицу, я получил все данные. Не идеально для моего варианта использования, но сработало.