На угловой стороне я передал данные с использованием метода 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" : "[email protected]" , "name" : "xyz"}' : ' ' [_proto_] : { } }
Помогите мне решить эту ошибку
Похоже, что вы можете включить 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
напрямую получить доступ req.body
свойствам req.body
(по сравнению с исходным req.body
). В конечном счете, метод Anuglar $ http.post() преобразует ваш объект data
javascript в 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);
Наблюдая за журналом консоли, кажется, что имена свойств объекта являются строками (обратите внимание на двойную цитату вокруг имен свойств).
Вы должны установить свой объект таким образом:
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
Надеюсь это поможет.
Какая версия экспресс используется? Попробуйте использовать для получения тела запроса
app.use(bodyParser());