2017-09-15 2 views
1

Je poste les données {id: "abc123", text: "sometext"} sur une API de noeud. Affichage d'un composant avec action appel:Impossible de lire le message depuis Fetch dans le noeud

export function addTextToAPI(inputData) { 
    return(dispatch) => { 
     console.log(inputData), 
     dispatch(addText(inputData)) 
     fetch(myapi, { 
      headers: { 
       'Accept': 'application/json', 
       'Content-Type': 'application/json' 
      }, 
      method: 'POST', 
      data: inputData 
     }) 
     .then(res => res.json()) 
    } 
} 

console.log (donnéesEntrée) est {id: "abc123", text: "sometext"}

noeud:

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

var app = express(); 

app.use(bodyParser.json()); 

app.post('/addtest', (req, res) => { 

    console.log(req.body);  // <= returns blank object {} 

    console.log(req.body.data); // <= returns undefined 

    console.log(req.query);  // <= returns blank object {} 

    console.log("test added");  

}); 


app.listen(3000); 

Je veux être en mesure de lire le inputData en req. Comment je fais ça? Je veux être en mesure de lire le inputData dans req. Comment je fais ça?

+0

J'ai aussi essayé 'JSON.stringify (donnéesEntrée)', mais cela ne fonctionne pas. – Somename

+0

Quel est votre en-tête de demande de type de contenu? – Phix

+0

@Phix .. Mise à jour du 'fetch' en question. Jetez un coup d'oeil s'il vous plait. – Somename

Répondre

3

Pour publier des données, vous devez transmettre un paramètre body pour récupérer.

Cela devrait fonctionner:

export function addTextToAPI(inputData) { 
    return(dispatch) => { 
     console.log(inputData), 
     dispatch(addText(inputData)) 
     fetch(myapi, { 
      headers: { 
       'Accept': 'application/json', 
       'Content-Type': 'application/json' 
      }, 
      method: 'POST', 
      body: JSON.stringify(inputData) 
     }) 
     .then(res => res.json()) 
    } 
} 
+0

en passant 'body' ne fonctionne pas. Maintenant, je ne reçois même pas de 'logs de console 'du noeud. Le retour au journal de la console 'data' fonctionne. Je crois que le fait de passer 'body' n'appelle pas du tout le noeud. – Somename

+1

essayez 'JSON.stringify' ing' inputData' et passez-le en tant que corps – mkhanoyan

+0

Cela a fonctionné! 'JSON.stringify' a fait l'affaire. Pourquoi ai-je besoin d'ajouter 'body' et je ne peux pas le passer comme un autre' param'? – Somename