Как (быстро) загружать огромные объемы данных в Firebase? - PullRequest
0 голосов
/ 01 февраля 2019

Я отправляю данные в Firestore на частоте 33 Гц.Это означает, что со временем сохраняется много данных.

Мне нужно иметь возможность загрузить эти данные.Для этого я создал функцию Http в firebase, которая получает пользовательский uid, серийный номер устройства, дату / время начала и дату / время окончания.Затем функция проверяет, существует ли пользователь, а также имеет ли он этот серийный номер.Затем он запрашивает Firestore и добавляет данные в объект JSON, который в конечном итоге отправляется в качестве ответа.

Но, в зависимости от того, как долго был выполнен запрос, тайм-аут функции.Это работает в течение коротких периодов.

Как мне сделать, чтобы сделать функцию быстрее?Я использую не тот инструмент?

[...]
const nD1 = db.collection('grind-bit').doc(req.query.serial).collection('history').where('date', '>=', startdate).where('date', '<=', enddate).get().then(snapshot => {
  snapshot.forEach(doc => {
    elem = {};
    elem.date = doc.data().date;
    elem.rms0 = doc.data().rms0;
    elem.rms1 = doc.data().rms1;
    elem.rms2 = doc.data().rms2;
    data[key].push(elem);
  });
  if(data[key].length) {
    let csv = json2csv(data[key]);
    csv = JSON.stringify(csv);
    res.set("Content-Type", "text/csv");
    return promises.push(res.status(200).send(csv));
  } else {
    return promises.push(res.status(401).send('No data has been found in this interval.'));
  }
[...]

1 Ответ

0 голосов
/ 01 февраля 2019

Если тайм-аут вызван тем фактом, что вы пытаетесь прочитать / вернуть слишком много данных за один раз, возможно, вы захотите ограничить объем возвращаемых данных.Добавив к вашему запросу предложение limit(), вы можете ограничить максимальный объем возвращаемых данных.

const nD1 = db.collection('grind-bit').doc(req.query.serial).collection('history')
.where('date', '>=', startdate).where('date', '<=', enddate)
.limit(100)
.get().then(snapshot => {
  snapshot.forEach(doc => {
    ...

Это, конечно, означает, что вам, возможно, придется вызывать функцию HTTP несколько раз, чтобы убедиться, что вы обрабатываетевсе данные.Самый простой подход для этого: если вы получите 100 результатов (или любое другое ограничение, указанное вами), попробуйте в другой раз после их обработки.

Также см .:

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