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

Displaying the angularjs posted data at node js using express

在angular这边,我使用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 post 编辑的数据,但我无法

当我在控制台中显示 req.body 时,我得到了以下响应:

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

帮我解决这个错误

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

app.use(bodyParser());

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

你应该这样设置你的对象:

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

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

看到这个link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer

希望对您有所帮助。

看起来您可能启用了 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);