2017-05-03 2 views
1

Ich sende Daten in meiner React-Komponente über die Fetch-API und das Ergebnis als JSON zurück. Wenn ich auf meinem Express-Server POSTED bin, verwende ich die jsonParser-Methode von bodyParser, um die Daten zu analysieren, aber ich bekomme nur ein leeres Objekt zurück. Ich verstehe nicht, was das Problem mit JsonParser ist, denn wenn ich TextParser benutze, werden meine Daten gut gesendet.Problem mit JSON für bodyParser

Edit: Beim Ausdrucken der Anfrage (req) auf dem Server, es wird angezeigt, dass nichts im Körper erhalten wurde. Dies geschieht jedoch nur mit jsonParser und nicht mit textParser.

Fetch:

fetch('./test',{ 
    method: 'POST', 
    body: ["{'name':'Justin'}"] 
}) 
.then((result) => { 
     return result.json(); 
    }) 
.then((response) => { 
     console.log(response); 
    }) 
.catch(function(error){ 
     //window.location = "./logout"; 
    console.log(error); 
    }); 

Express:

app.use('/test', jsonParser, (req,res) =>{ 
    res.json(req.body); 
}) 

Antwort

2

Angenommen Sie haben die {name: 'Justin'} Objekt zu stellen, werden Sie so etwas wie

fetch('test', { 
    method: 'POST', 
    body: JSON.stringify({name: 'Justin'}), 
    headers: new Headers({ 
    'Content-Type': 'application/json; charset=utf-8' 
    }) 
}) 

Der body Parameter will nicht akzeptieren ein Array (was du passierst).


Wenn Sie ein Array schreiben wollte, einfach den body Wert so viel zu

JSON.stringify([{name: 'Justin'}]) 
+0

Dank ändern, das perfekt funktioniert! –