【问题标题】:How to create an object in Node js backend server and pass it to Angular 2 front end如何在 Node js 后端服务器中创建一个对象并将其传递给 Angular 2 前端
【发布时间】:2018-05-03 13:55:26
【问题描述】:

我想在节点服务器上形成一个 javascript 对象并且 例子 : 下面是我的 server.js 文件中存在的对象

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

我想在注入到组件的 Angular 2 服务中获取相同的对象。

请建议我怎样才能达到同样的效果?

【问题讨论】:

  • 不清楚您在问题中的要求。您的 Node 后端是 REST API 吗?如果是这样,您将需要使用 Angular 的 HttpClient 对其进行 rest api 调用以获取所需的数据。
  • 能否请您添加相同的示例代码?

标签: javascript node.js angular angular2-services


【解决方案1】:

使用angular的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,它是 Angular 为我们提供的 AJAX 之上的抽象层。该服务使用以下代码this.http.post 发出一个post 请求。该函数有两个参数,POST 请求发送到的 URL,以及 POST 请求正文中的键值对。该函数返回一个 Observable,可以在使用该函数的组件中订阅。

注册组件(仅注册功能):

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

当我们想要发出 AJAX 请求时,应该调用这个函数。它使用dependency inversion principle,这样我们就可以更改服务,而无需大幅更改组件。

NodeJS 快递后端

我想您已经运行了一个基本的 express 应用程序,那么这是您需要侦听 AJAX 调用并响应您要发送的对象的中间件。

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

   return res.json(chart);
});

这个中间件(express 框架的一部分)监听注册组件上的POST 请求。然后它会发送带有图表对象值的JSON 响应。

如果有什么不清楚的地方,我强烈建议你试着把握原则,阅读一些关于该主题的文章。

【讨论】:

    猜你喜欢
    • 2011-12-02
    • 2021-03-10
    • 2018-06-11
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多