Крайний срок Firestore Превышен Узел - PullRequest
1 голос
/ 12 марта 2019

Я хотел бы загрузить коллекцию, которая составляет ~ 30 тыс. Записей. Т.е. загрузить его через.

const db = admin.firestore();
let documentsArray: Array<{}> = [];
db.collection(collection)
  .get()
  .then(snap => {
    snap.forEach(doc => {
      documentsArray.push(doc);
    });
  })
  .catch(err => console.log(err));

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

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

В качестве альтернативы я также мог бы экспортировать коллекцию с gcloud beta firestore export, но она не предоставляет данные JSON.

Ответы [ 2 ]

1 голос
/ 13 марта 2019

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

Я искал какой-то механизм, который позволил бы мне разбивать на части корыто

Возможно, вы пропустили эту страницу

https://cloud.google.com/firestore/docs/query-data/query-cursors

0 голосов
/ 14 марта 2019

В итоге проблема заключалась в том, что машина, которая обрабатывала записи 30 тыс. Из Firestore, была недостаточно мощной, чтобы вовремя получать необходимые данные. Решено с помощью GCE с n1-standard-4 GCE.

...