简单的帖子请求即可获取位置

时间:2019-12-23 18:46:09

标签: javascript angular express

我正在尝试获取用户的位置并将其发送到我的服务器,以便可以进行一些api调用。我得到了用户的当前位置,这很好,但是它不会发布到服务器,也不知道为什么。您能看一下我的代码并帮助我弄清楚吗。

后端

index.routes.js

router.post('/currentLatLong', ctrlEvent.currentLatLong);

event.controller.js

module.exports.currentLatLong = (req, res) => {
  console.log('recieved');
  this.currentLoc = req.body;
  console.log('this.currentLoc', this.currentLoc);
}

前端

服务

    constructor(private data: DataService, private http: HttpClient) { }

    getUserLocation() {
    /* locate the User */
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(position => {
        this.currentLat = position.coords.latitude;
        this.currentLng = position.coords.longitude;
        console.log('position.coords.latitude', this.currentLat);
        this.data.latitudeSource.next(this.currentLat);
        this.data.longitudeSource.next(this.currentLng);
        const currentLatLong = {
          latitude: this.currentLat,
          longitude: this.currentLng
        };
        console.log('currentLatLong', currentLatLong);
        return this.http.post(environment.apiBaseUrl + '/currentLatLong', 
        currentLatLong);
      }, err => {
        console.log(err);
        return false;
      });
      } else {
      console.log('bad');
      return false;
      }
    }

1 个答案:

答案 0 :(得分:1)

在有角度的一面,您需要调用subscribe()方法。调用subscribe()方法将执行observable,这是发起请求的原因。

this.http.post(environment.apiBaseUrl + '/currentLatLong', currentLatLong)
    .subscribe(
      res => {
        console.log(res);
      },
      err => {
        console.log(err);
      }
    );

在您对该方法返回的可观察对象上调用subscribe()之前,HttpClient方法不会开始其HTTP请求。