2017-06-15 1 views
0

J'utilise l'analyseur de corps et de réagir pour mon front-end. J'essaye de créer un utilisateur; ci-dessous est du côté de l'extrémité avant de la récupération des données à partir du serveur arrière:formulaire à partir de front-end ne reçoit pas correctement sur req.body sur backend nodejs

registering (e) { 
    e.preventDefault() 
    let form = e.target 
    let name = form.querySelectorAll('input')[0].value 

    fetch('http://localhost:5000/createacc', { 
    method: 'POST', 
    headers: {'Content-Type':'application/x-www-form-urlencoded'}, 
    mode: 'no-cors', 
    body: JSON.stringify({name: name}) 
    }) 

ci-dessous est la partie de réception d'arrière-plan:

function create (req, res, next) { 
    console.log('req is ...', req.body) 
} 

actuellement le journal de la console est la suivante:

req is ... { '{"name":"Smiley"}': '' } 

Je ne serai pas en mesure d'utiliser correctement les informations comme celle-ci?

Répondre

1

Oui, vous avez partiellement raison, vous avez reçu une chaîne qui doit être analysée. Il n'est pas nécessaire d'utiliser JSON.stringify() lors de l'envoi d'une requête. En outre, en envoyant un objet, vous devez utiliser le type de contenu application/json. Il est possible que vous ayez oublié d'inclure le middleware du parseur.

https://www.npmjs.com/package/body-parser

0

En effet, le Content-Type et body est incompatible. Le Content-Type indique que le contenu est x-www-form-urlencoded mais le format du corps est JSON.

Si vous souhaitez conserver Content-Type en tant que application/x-www-form-urlencoded, le format du corps doit être a=xxx&b=yyy. Pour votre code, ce serait:

body: 'name='+name 

Si vous souhaitez transférer les données en tant que JSON, le Content-Type devrait être changé en application/json.