React-Native / Firestore - Поиск по дате - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь создать поисковый фильтр, где вы можете фильтровать по определенной дате. Не уверен, в чем проблема. Это реактивный проект, в котором я использую хуки (useEffect) для чтения данных из хранилища. Эта часть работает очень хорошо. Однако я хочу применить фильтр поиска, где вы можете выбрать как местоположение, так и дату.

Часть локации работает как шарм. Вот пример кода:

   useEffect(() => {
    db.collection("Name of the collection")
      .where("location", "==", props.searchLocation) 
      .where("date", "==", props.searchDate)
      .onSnapshot(snapshot => {

Если я удаляю часть запроса даты, то часть местоположения работает нормально. Кроме того, если я изменил == на> = в части даты, то он отображает данные за выбранную дату и вперед.

 useEffect(() => {
    db.collection("Name of collection")
      .where("location", "==", props.searchLocation)
      .where("date", "=<", props.searchDate)
      .onSnapshot(snapshot => { 

Но дело в том, что я хочу, чтобы он отображал только данные из выбраннойсвидание. Если я console.log props.SearchDate, то формат выглядит следующим образом: 2019-11-09T00: 00: 00.000Z.

Я использую базовый DatePicker для реагирования, чтобы иметь возможность выбрать дату, и ятакже есть Moment.js для отображения даты.

Есть мысли по этому поводу? Имеет ли это какое-либо отношение к формату даты и времени?

Обновление 1

Код, который я использую для установки реквизита. Поиск датыи снимок экрана console.log () + instanceof Date

Screen.js  
const [searchDate, setSearchDate] = useState(new Date());
console.log(searchDate instanceof Date);
console.log(searchDate);

component.js
  const datePicker = value => {
    new Date(props.setSearchDate(value));
  };

снимок экрана консоли expo

Обновление 2 - Мое решение

Я решил проблему с созданием двух conts в начале useEffect, где я установил время выбранной даты.

Затем я запросил данные двумя .where ()аргументы.

Это мое решение, если кто-то еще борется с тем же. Однако я не знаю, является ли это лучшей практикой.

useEffect(() => {
    const date1 = new Date(props.searchDate.setHours(0, 0, 0, 0));
    const date2 = new Date(props.searchDate.setHours(23, 59, 59, 59));
    console.log(date1);
    console.log(date2);
    db.collection("Name of collection")
      .where("location", "==", props.searchLocation)
      .where("date", ">=", date1)
      .where("date", "<=", date2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...