почему я получаю это исключение с помощью firebase? - PullRequest
0 голосов
/ 03 июля 2019

эй, я новичок в реагировании на родную систему, и у меня есть приложение, которое получает данные из firebase. Все в порядке, пока не появится экран, на котором я должен получить данные, а затем отсортировать их по имени или расстоянию. Имя отлично работает, но с расстоянием это дает мне исключение и даже геолокация иногда работают, а иногда нет, я удаляю кеш браузеров, я удаляю приложение и удаляю кэш телефона, но все та же проблема

@firebase/database: FIREBASE WARNING: Exception was thrown by user callback. Error: 'undefined' is no valid coordinate.

firebase.database().ref().child('businesses')
     .orderByChild('category')
     .equalTo(`${this.state.idorga}`)
     .once('value', (snapshot) => {
      const data = snapshot.val();
     // const items = Object.values(data);
      const items = Object.keys(data).reduce((result, key) => 
      result.concat({ id: key, ...data[key] }), []);
      const data1 = items;
//here the code who sort my data with name
     if (this.state.tri !== 'alphabetique') {
      let i = 0;
      while (i < data1.length - 1) {
        if (data1[i].name.localeCompare(data1[i + 1].name) === 1) {
                const a = data1[i];
                data1[i] = data1[i + 1];
                data1[i + 1] = a;
                i = 0;
        } else {
          i++;
        }
      } 
} else {
//here where i try to sort my data using distance 
  let i = 0; 
  navigator.geolocation.getCurrentPosition((position) => this.setState({ location: position }));
  while (i < data1.length - 1) {
// here i am using geolib to calcule disttance and store it on a const
    const A = geolib.getDistance(this.state.location.coords, {
      latitude: data1[i].mapdata.annotations[0].latitude,
      longitude: data1[i].mapdata.annotations[0].longitude,
  });
  const B = geolib.getDistance(this.state.location.coords, {
    latitude: data1[i + 1].mapdata.annotations[0].latitude,
    longitude: data1[i + 1].mapdata.annotations[0].longitude,
});
if (A > B) {
  const a = data1[i];
  data1[i] = data1[i + 1];
  data1[i + 1] = a;
  i = 0;
} else {
i++;
}
  }
}
     this.setState({ items: data1 });
     this.setState({ dataBackup: data1 });
   });
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...