2016-01-07 1 views
0

Du côté angulaire, j'ai transmis des données en utilisant la méthode post.Affichage des données affichées angularjs au nœud js en utilisant l'expression

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) { ... }); 

A côté serveur essayé d'accéder aux données i affiché à l'aide req.body.id mais je ne pouvais pas

Quand je manifestai les req.body dans la console i obtenu la réponse suivante:

{ ' {"id" : "1234" , "email" : "[email protected]" , "name" : "xyz"}' : ' ' [_proto_] : { } } 

Aidez-moi pour résoudre cette erreur

Répondre

0

Il semble que vous pouvez avoir bodyParser activé mais, vous devez activer à la place du middleware bodyParser.json() en utilisant les éléments suivants:

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); 

Cela vous permet de poster vos comment vous êtes déjà mais, vous permettent d'accéder req.body propriétés directement (par rapport au corps de chaîne brute). En fin de compte, la méthode $http.post() d'Anuglar convertira votre objet javascript data en JSON avant de l'envoyer à votre serveur.

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

merci pour la suggestion. J'ai essayé mais encore il prend la partie du corps comme ça seulement, n'a pas pu résoudre le problème. – valarmathi

+0

quand j'appelle l'api de postman plugin je pourrais obtenir le responce approprié. donc je pense que le problème est dans le côté angulaire. J'ai essayé toutes les manières que j'ai trouvées de google mais je ne pourrais pas. – valarmathi

+0

Avez-vous quelque chose dans Angular qui surcharge l'en-tête 'Content-Type'? Nous avons l'objet 'data' dans votre message, mais à quoi ressemble l'objet' config' que vous passez? – Sean3z

0

Quelle version de express est utilisée? Essayez d'utiliser pour obtenir le corps de la requête parsé

app.use(bodyParser()); 
0

Regarder à votre journal de la console, il semble que les noms de propriété d'objets sont des chaînes (notez les guillemets autour des noms de propriété).

Vous devez définir votre objet de cette façon:

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

Les noms de propriété ne sont pas cités dans l'objet initialisation littérale (si ce n'est pas ce que vous avez besoin :-).

Voir ce lien: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer

Hope this helps.