Как мне написать составной запрос в firebase, который включает временную метку - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь написать составной запрос в моей облачной функции, которая считает все документы с отметкой времени, превышающей текущее время. У меня есть два вопроса: 1. Будет ли в порядке текущая структура хранения метки времени в виде строки в пожарном хранилище или я должен сохранить ее как метку времени в пожарном депо? 2. Как в любом случае написать составной запрос?

const functions = require('firebase-functions');
const admin = require('firebase-admin');
var db = admin.firestore();

exports.welcomeData = functions.https.onCall(async(data, context) => {
  if (!context.auth) {
    throw new functions.https.HttpsError('failed-precondition', 'The function must be called ' +
        'while authenticated.');
  }

  const uid = context.auth.uid;
  var currentDateTime = new Date()
  var numberRequestsPosted = 0

  var requestsRef = db.collection('requests');
  var query = await requestsRef.where('createdBy', '==', uid)
 .where('fromDateAndTime','>',currentDateTime).get()
.then(snapshotRequests => {
  if (snapshotRequests.empty) {
    console.log('WelcomeData: No matching documents.');
  }
  else {
    snapshotRequests.forEach(request => {
      numberRequestsPosted++;
    })
  }
})

return {
    numberRequestsPosted: numberRequestsPosted.toString(),
    };
});

В моем документе есть поле документа типа string с именем fromDateAndTime, которое хранится в следующем формате: 24.04.2009, 2:00

1 Ответ

0 голосов
/ 25 апреля 2019

Я считаю, что самый простой и универсальный способ хранения временных меток - это целочисленная версия GMT по нескольким причинам: for example: 1556198939

  1. Эта функция встроена в каждый отдельный язык программирования и компьютер.
  2. Расчеты просты и эффективны > int < int
  3. У каждого языка программирования есть способ преобразовать его в свой локальный формат даты, и каждый язык может изменить его на местный часовой пояс.

Так что сэкономьте время и головную боль и сохраните дату в виде целого числа по Гринвичу.

Кроме того, не забудьте сделать это var timeStamp = Date.now()/1000, потому что узел работает в миллисекундных временных масштабах.

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