Отображение отправленных данных angularjs в узле js с помощью экспресс

0

На угловой стороне я передал данные с использованием метода 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_] : { } }

Помогите мне решить эту ошибку

Теги:
express
google-api-nodejs-client

3 ответа

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 напрямую получить доступ 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);
  • 0
    спасибо за помощь Я пытался, но все же он принимает только часть тела, не мог решить проблему.
  • 0
    когда я вызываю API от плагина почтальона, я могу получить правильный ответ. так что я думаю, что проблема в угловой стороне. Я попробовал все способы, которые я нашел в Google, но я не смог.
Показать ещё 4 комментария
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

Надеюсь это поможет.

0

Какая версия экспресс используется? Попробуйте использовать для получения тела запроса

app.use(bodyParser());

Ещё вопросы

Сообщество Overcoder
Наверх
Меню