Отправка почтового запроса на экспресс-сервер - PullRequest
0 голосов
/ 19 июня 2019

В моем сервисе есть функция, которая получает текущее местоположение пользователя (широта / долгота).Я пытаюсь отправить широту и долготу на мой сервер, чтобы добавить их в запрос.Тем не менее, мой почтовый запрос не работает.Я включил свой модуль appInitializer, чтобы показать, как вызывается эта функция.

eventServer.js

router.get('/ticketmaster-events', (req, res) => {
/*   adding it to this query */
  axios.get('http://app.ticketmaster.com/discovery/v2/events.json?apikey=hneV7jzq6Uz7IyQC7GtEHz5s2nTsU6Jm&size=200')
  .then(res2 => {
    res.send(res2.data._embedded.events)
  })
  .catch(err => res.send(err))
  });

router.route('/currentLatLong').post((req, res, next) => {
  console.log("hello this test")
  try{
    res.end("response is " + req.body);
    console.log(req);
  }
  catch(err) {
    res.send(err);
  }
});

google.service.ts

export class GoogleService {
  uri = 'http://localhost:4000';
  public currentLat: number;
  public currentLng: number;
  public currentLatLong: any = [];

    getUserLocation() {
    /* locate the User */
    if (navigator.geolocation) {
        console.log('good');
        navigator.geolocation.getCurrentPosition(position => {
        this.currentLat = position.coords.latitude;
        this.currentLng = position.coords.longitude;
        this.data.latitudeSource.next(this.currentLat);
        this.data.longitudeSource.next(this.currentLng);
        const currentLatLong = {
          latitude : this.currentLat,
          longitude: this.currentLng
        };
        console.log(currentLatLong);

        return this.http.post(`${this.uri}/currentLatLong`, JSON.stringify(currentLatLong)/* , {
          headers: new HttpHeaders({'Content-Type': 'application-json'})} */
          ).subscribe(response => {
          console.log('your response is here', JSON.stringify(response));
           },
           error => {
             console.log('error occoured', error);
          });
      });
    } else {
      console.log('bad');
    }
  }
  constructor(private data: DataService, private http: HttpClient) { }
}

appInitializer.module.ts

import { NgModule, APP_INITIALIZER } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { TicketMasterService } from '../../services/tmService/ticket-master.service';
import { GoogleService } from '../../services/googleService/google.service';

    export function fetchTmData(tmService: TicketMasterService) {
  return () => tmService.fetchTmData();
}

    export function getUserLocation(googleService: GoogleService) {
  return () => googleService.getUserLocation();
}

    @NgModule({
    imports: [HttpClientModule],
    providers: [
    TicketMasterService,
    GoogleService,
    { provide: APP_INITIALIZER, useFactory: fetchTmData, deps: [TicketMasterService], multi: true },
    { provide: APP_INITIALIZER, useFactory: getUserLocation, deps:[GoogleService], multi: true }
    ]
    })
    export class AppLoadModule { }

1 Ответ

0 голосов
/ 19 июня 2019

Я не знаю, с какой ошибкой вы столкнулись, но она может сработать, если вы отредактируете свою службу GoogleService, как показано ниже.

export class GoogleService {
  uri = 'http://localhost:4000';
  public currentLat: number;
  public currentLng: number;
  public currentLatLong: any = [];

  getUserLocation() {
    /* locate the User */
    if (navigator.geolocation) {
        console.log('good');
        navigator.geolocation.getCurrentPosition(position => {
        this.currentLat = position.coords.latitude;
        this.currentLng = position.coords.longitude;
        this.data.latitudeSource.next(this.currentLat);
        this.data.longitudeSource.next(this.currentLng);
        this.currentLatLong[0] = this.currentLat;
        this.currentLatLong[1] = this.currentLng;

       this.http.post(`${this.uri}/currentLatLong`, JSON.stringify(this.currentLatLong), {
          headers: new HttpHeaders({'Content-Type': 'application-json'})}
          ).subscribe(response=>{
           consol.log("your response is here")
           },
           error=>{console.log("error occoured")});

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

Вы должны сделать http requests как Observable, ипреобразовать ваш объект в строку, как решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...