Firestore Cloud Функция запрос по дате - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь выполнить запрос к базе данных Firestore к коллекции и отфильтровать по дате. У меня есть поле Timestamp, и мне нужно получить результаты, когда поле с именем «specificDate» равно now ().

app.get('/execute',  async(req, res, next) => {

  const snaps = await db.collection('notifications').where("specificDate", "==", new Date()).get()

  const results= [];
  snaps.forEach(snap => results.push(snap.data()));
  res.status(200).json({results});
});

Независимо от какой-либо комбинации, у меня нет результата. Если я изменю "= = "с" <"или"> "у меня есть результаты. Я боюсь, что проблема связана со временем, и я хочу игнорировать это, мне важны только год, месяц и день. Следующие изображения иллюстрируют мою коллекцию пожарных, всего один предмет. enter image description here

Я занимался исследованиями, и мне еще не повезло.

Ответы [ 2 ]

2 голосов
/ 13 февраля 2020

Задайте для запроса нужный диапазон с помощью запроса AND. Поскольку вам не нужно точно подбирать время, укажите весь диапазон дней.

var start = new Date();
start.setHours(0,0,0,0);

var end = new Date(start.getTime());
end.setHours(23,59,59,999);

const snaps = await db.collection('notifications').where("specificDate", ">=", start ).where("specificDate", "<=", end).get()
1 голос
/ 13 февраля 2020

Следующие действия должны помочь, используя метод fromDate() метки времени Firestore для построения запроса:

const timestamp = firebase.firestore.Timestamp.fromDate(
          new Date('2020-02-12 00:00:00')
        )

const snaps = await db.collection('notifications').where("specificDate", "==", timestamp).get()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...