使用express在节点js显示angularjs发布数据

时间:2016-01-07 11:36:06

标签: angularjs node.js express google-api-nodejs-client

在角度方面,我使用post方法传递数据。

var data = {
  'id': mydata.google_id,
  'token': mydata.token,
  'email': mydata.email,
  'name': mydata.name
}; 

$http.post('http://localhost:3000/login1',data,config)
     .success(function (data, status, headers, config) { ... })
     .error(function (data, status, header, config) { ... });

在服务器端尝试访问我使用req.body.id发布的数据,但我无法

当我在控制台中显示req.body时,我获得了以下回复:

{ ' {"id" : "1234" , "email" : "xyz@gmail.com" , "name" : "xyz"}' : '  ' [_proto_] : { } }

帮我解决此错误

3 个答案:

答案 0 :(得分:0)

正在使用哪个版本的快递? 尝试使用解析请求正文

app.use(bodyParser());

答案 1 :(得分:0)

在您的控制台日志中观察,对象属性名称似乎是字符串(请注意属性名称周围的双引号)。

您应该以这种方式设置对象:

var data = {
    id: mydata.google_id,
    token: mydata.token,
    email: mydata.email,
    name: mydata.name 
};

在对象文字初始化中未引用属性名称(如果这不是您需要的:-)。

请参阅此链接:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer

希望这有帮助。

答案 2 :(得分:0)

您可能已启用bodyParser但是,您需要使用以下内容启用bodyParser.json()中间件:

var express = require('express');
var app = express();

var bodyParser = require('body-parser');
var cors = require('cors');

app.use(cors());

// parse application/json
app.use(bodyParser.json());

app.post('/meow', function(req, res) {
  console.dir(req.body);
  res.send(req.body);
});

app.listen(8181);

这将允许您发布POST方式,但是,您可以直接访问req.body属性(与原始字符串主体相比)。最终,Anuglar的$http.post()方法会将您的javascript data对象转换为JSON,然后再将其发送到您的服务器。

var data = {
  id: mydata.google_id,
  token: mydata.token,
  email: mydata.email,
  name: mydata.name
};

var config = {
  headers: {}
};

$http.post('http://localhost:8181/meow', data, config);