Запрос данных в пожарном хранилище по метке времени - PullRequest
1 голос
/ 25 сентября 2019

Я запрашиваю документы по метке времени, и он возвращает пустой массив.Однако это работает, когда я использую "==" ex: .where ('date', '==', timestamp) , и возвращает пустой массив, когда я использую '> = ' или ' <= '</strong>.

Я также пытался преобразовать отметку времени в объект даты и строку, но безуспешно.

Примечание: Поле date в firestore имеет тип Отметка времени .

Я ищу документы с датой, превышающей '2018-08-03' в коллекции.

Ниже приведено изображение коллекции транзакций (слева) и документа (справа), который должен быть частью массива возвращаемых документов, поскольку дата больше «2018-08-03»

enter image description here

Ниже приведен мой код.

  const timestamp1 = admin.firestore.Timestamp.fromDate(firstDay);
  const trans = [];
  const docRef = db.collection('Users').doc(uid).collection('transactions').where('item_id', '==', item_id)
    .where('date', '>=', timestamp1);
  await docRef.get()
    .then((snapshot) => {
      snapshot.forEach((doc) => {
        trans.push({ transaction_id: doc.id, transaction: doc.data() });
      });
    })
    .catch(err => new Error('cannot get the documents', err));

Ожидаемый результат : должен быть массив с транзакциями с датойбольше, чем указано выше. Фактический результат : пустой массив.

Поскольку он работает на равенство == , я предположил, что > = и <= </strong> будет работать.Что-то мне здесь не хватает?

1 Ответ

0 голосов
/ 26 сентября 2019

Возьмите свою дату и конвертируйте в объект даты javascript.Затем выполните getTime () для преобразованного объекта даты, он вернет число.Затем получите метку времени firestore и выполните getSeconds (). Сравните значение секунд метки времени firestore с переменной, хранящей вывод getTime ().

...