Как проверить данные firebase () на наличие нулевых значений в поле геопозиции - PullRequest
0 голосов
/ 20 апреля 2020

Я добавляю пользовательские геопоинты и хотел бы проверить, имеет ли snapShot.data (). Location.geopoint значение NULL, прежде чем помещать данные в массив, но я получаю следующую ошибку:

ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'geopoint' of undefined
TypeError: Cannot read property 'geopoint' of undefined
 

Вот актуальный код?

query.get()
            .then(list => {
              list.forEach(snapShot => {
                let userLat = (snapShot.data().location.geopoint.latitude > 0) ? snapShot.data().location.geopoint.latitude : 0;
                let userLong = (snapShot.data().location.geopoint.longitude > 0) ? snapShot.data().location.geopoint.longitude : 0;

                console.log('use lat long', userLat, userLong);

                let distance = this.geo.distance(this.geo.point(myLat, myLong), this.geo.point(userLat, userLong));
                if (distance <= this.userSettings.distance.upper) {
                  this.userInfo.push({
                    userId: snapShot.data().userId,
                    displayName: snapShot.data().displayName,
                  });
                }
              });
            })

как бы я проверил нулевое значение в геопункте, если он жалуется на ту фактическую нулевую проверку, которую я добавил:

            let userLat = (snapShot.data().location.geopoint.latitude > 0) ? snapShot.data().location.geopoint.latitude : 0;

1 Ответ

1 голос
/ 20 апреля 2020

Вы можете использовать API snapshot.get(fieldPath) ( документы ) и сделать:

let userLat = 0;
let userLong = 0;

if (snapShot.get("location.geopoint")) {
  userLat = snapShot.get("location.geopoint").latitude;
  userLong = snapShot.get("location.geopoint").longitude;
}
...