将res.json()表达为Angular $ http.get()格式问题

时间:2018-06-10 22:35:47

标签: angularjs node.js express routing

如何从res.json() [控制器]中的$http.get() [服务器]响应对象获取数据?

我觉得这与content-type有关,因为我不想手动输入$scope.message = data.data.message;

我正在玩MEAN堆栈并尝试使用ng-bind将Express中的数据显示为Angular。

Server.js使用.get()路由上的/api来回复一个简单的对象res.json({ message : 'Hello World' }),如下所示:

...
// Server frontend view
app.use(express.static(__dirname + '/public'));

// Configure bodyParser
app.use(bodyParser.urlencoded({'extended':'true'}));            // parse application/x-www-form-urlencoded
app.use(bodyParser.json());                                     // parse application/json
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json

// Specify backend route
router.get('/api', (req, res) => {
  res.json({message : 'Hello World'});
});
...

<小时/> Angular控制器使用简单的$http.get('/api/)来检索数据,如下所示:

...
$http.get('/api')
  .then(data => {
    $scope.message = data;
      console.log('Data: ' + data);
   }, err => {
     console.log('Error: ' + err);
   });
...

<小时/> 当我测试localhost:port/api时,我看到{message:'Hello World'}, 当我使用localhost:port这是我的Angular视图时,我看到了这些数据:

  

{ “数据”:{ “消息”:“你好   世界 “},” 状态 “:200,” 配置 “:{” 方法 “:” GET”, “transformRequest”:[空], “transformResponse”:[空], “jsonpCallbackParam”: “回调”, “URL” : “/ API”, “标题”:{ “接受”:“应用/ JSON,   text / plain, / “}},”statusText“:”OK“,”xhrStatus“:”完整“}

1 个答案:

答案 0 :(得分:3)

data参数实际上是response object,响应正文可用作data属性。它应该是:

$http.get('/api')
  .then(({ data }) => {
    $scope.message = data;
      console.log('Data: ' + data);
   }, err => {
     console.log('Error: ' + err);
   });