#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 запросов на запрос, и, выполнив итерацию через единицу, я получил все данные. Не идеально для моего варианта использования, но сработало.