使用Angular2应用程序调用NodeJs API

时间:2018-07-05 13:10:52

标签: node.js angular

对于一个项目,我需要使用Angular制作一个应用程序,其中必须从数据库中获取数据。因此,我使用NodeJs制作了一个API,以处理连接并获取数据。

但是现在用Angular App调用此API时出现问题,我先向您展示我的代码

这里是我尝试返回数据以使用它的组件:(something.component.ts)

onGetData(){
  this.foncService.getData()
  .subscribe((data) => {
    console.log(data);
  },(error) => {
    console.log("error : ", error);
  });  
}

我在这里调用我的API:(something.service.ts)

getData(){
  return this.httpClient.get('localhost:3000/api/data').map(res => res);
}

在这里,我从API的数据库中获取数据:(api.js)

function getAllDatas(req, res, next) {
  db.any('select * from dat')
  .then(function (data) {
    res.status(200)
    .json({
      status: 'success',
      data: data,
      message: 'done'
    });
  })
  .catch(function (err) {
    return next(err);
  });
}

API运作良好,当我单独使用它时,我可以获得正确的数据。

好吧,当我想使用数据时,问题出在组件上,所以问题可能出在我的服务idk :(,所以我的错误如下:

enter image description here

当我想在Internet上搜索此错误时,我总是会陷入CORS问题,但我认为我已经对其进行了配置

api.js

var cors = require('cors');
app.use(cors())

//or I also tried

app.use(function(req, res, next) { 
  res.header("Access-Control-Allow-Origin", "*"); 
});

1 个答案:

答案 0 :(得分:0)

是的,似乎是CORS问题,您解决的方式是一种方法,另一种是使用来自angular的proxy.config.json文件,该文件将所有传入请求重新写入代理端口。因此,您将重新写入后端端口,而不是4200。

然后您将ng serve --proxy-config proxy.conf.json

例如:

https://itnext.io/angular-cli-proxy-configuration-4311acec9d6f

我不确定颜色,抱歉。