Как создать объект на внутреннем сервере Node js и передать его в Angular 2 front end - PullRequest
0 голосов
/ 03 мая 2018

Я хочу сформировать объект javascript на сервере узла и пример : ниже представлен объект в моем файле server.js

chart = {property: value, property: value, property: value}

Я хочу получить тот же объект в сервисе angular 2, который внедряется в компонент.

Подскажите, пожалуйста, как мне добиться того же?

1 Ответ

0 голосов
/ 03 мая 2018

Используйте Httpclient угловой. Вот пример:

Услуги:

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import { HttpClient } from '@angular/common/http';

@Injectable()
export class RegisterService {

  constructor(private http: HttpClient) {

  }

  register(username: string, randomPass: string, email: string): Observable<any> {
    return this.http.post('http://localhost:3000/register',
      {username: username, randomPass: randomPass, email: email})
    .catch((error: any) => Observable.throw(error.json().error || 'Server error'));
  }
}

В нашем сервисе мы внедрили HttpClient, который является слоем абстракции над AJAX, который нам предоставляет Angular. Эта служба делает почтовый запрос со следующим кодом this.http.post. Эта функция принимает два аргумента: URL-адрес, на который отправляется запрос POST, и пары ключ-значение в теле запроса POST. Функция возвращает Observable, на который можно подписаться в компоненте, использующем эту функцию.

Регистрация компонента (только функция регистрации):

 public register(username: string, randomPass: string, email: string) {
      this.registerService.register(username, email)
        .subscribe(myResponse => {
          if (myResponse.success) {
            this.registered = true;
        });
    }
  }

Эта функция должна вызываться, когда мы хотим сделать запрос AJAX. Он использует принцип инверсии зависимостей , таким образом, мы можем изменить сервис без необходимости кардинального изменения компонента.

NodeJS Express Backend

Полагаю, у вас уже запущено базовое приложение Express, тогда это промежуточное ПО, которое вам нужно для прослушивания вызова AJAX и ответа с объектом, который вы хотите отправить.

app.post('register', (req, res, next) => {
   chart = {property: value, property: value, property: value}

   return res.json(chart);
});

Это промежуточное ПО (часть экспресс-фреймворка) прослушивает POST запросов на компоненте регистра. Затем он отправляет JSON ответ со значениями объекта диаграммы.

Если что-то не ясно, я настоятельно рекомендую вам попытаться понять принцип прочтения некоторых статей по этой теме.

...