2017-07-21 4 views
0

Je transfère les données de mon formulaire vers mon mLab mais elles sont formatées d'une manière que je n'aime pas. il est bien comme çaPile MERN: Enregistrement des données de formulaire dans mLab - Formatage Problème

{ '{"email":"[email protected]","message":"not what i want"}': '' }

et pire encore, il sauve que ce

"data": "{\"{\\\"email\\\":\\\"[email protected]\\\",\\\"message\\\":\\\"this is ridiculous\\\"}\":\"\"}"

il est la mise en mes données comme la clé de rien fondamentalement. J'ai décidé de changer mon schéma en un objet juste pour que je puisse sauver quelque chose. Idéalement, je veux une clé pour chaque donnée. et je veux pouvoir y accéder plus tard. Je ne pouvais pas obtenir l'analyseur de corps pour travailler si j'utilise express-formidable comme intergiciel. Il y a beaucoup de pièces en mouvement et si je change les choses, je plante le serveur et j'obtiens des erreurs, peu importe ce que je fais. D'accord, voici une partie du code des deux côtés.


CODE SERVEUR:

var formSchema = new Schema({ 
    data: Object 
}) 
app.use(formidable()); 

app.post('/contact', function(req,res,next){ 
    console.log(req.fields) 
    var item = JSON.stringify(req.fields) 

    var form = new Form({data: item 
}).save(function(err,data){ 
     if(err) throw err 
     if(data) res.json(data) 
    }) 
}) 

CLIENT CODE CÔTÉ

submitData(e){ 
    e.preventDefault(); 
    let email = this.state.value; 
    let msg = this.state.value2; 
    let data = { 
     email: email, 
     message: msg 
    } 
    fetch('/contact', { 
    method: 'POST', 
    headers: { 
    'Accept': 'application/json', 
    'Content-Type': 'application/x-www-form-urlencoded' 
}, 
body: JSON.stringify(data) 
}) 
.then((response) => response.json()) 
     .then((responseData) => { 
      console.log("Response:",responseData); 
      this.setState({ 
       value: "", 
       value2: "", 
       status: "THANKS FOR CONTACTING ME I'LL BE IN TOUCH SOON" 
      }) 
     }).catch((error) => { 
       console.log(error) 
     }) 
} 

cela me rend fou. Idéalement, je voudrais le faire correctement. ou en quelque sorte accéder à l'objet et obtenir les clés de messagerie et de message et juste changer mon schéma. alors je pourrais assigner les clefs dans mon nouveau formulaire (... section

Répondre

0

Dans une torsion bizarre d'événements je l'ai résolu en quelque sorte. ceci ne peut pas être le meilleur chemin mais cela fonctionne .je voudrais toujours savoir où le long de la ligne que je suis allé mal. J'ai vu un tutoriel où les données de formulaire a été facilement justifiables ... accordé n'a pas été d'une extrémité avant de réagir ... de toute façon ce que je l'ai fait

My Custom Solution

var formSchema = new Schema({ 
    email: String, 
    message: String 
}) 
app.use(urlencodedParser); 
app.post('/contact', function(req,res,next){ 
    var item = Object.keys(req.body) 
    var o = JSON.parse(item[0]) 
    var e = o.email 
    var m = o.message 
    console.log(e) 
    //var item = JSON.stringify(req.fields) 
    var form = new Form({email: e,message: m 
}).save(function(err,data){ 
     if(err) throw err 
     if(data) res.json(data) 
    }) 
}) 

Je suis revenu à body-parser de formidable mais de toute façon je recevais cet objet étrange


Je ne sais toujours pas pourquoi mon objet de données était {'{'key':'value'}':''} Je pensais que mon problème était du côté du serveur ... mais c'est peut-être quelque chose avec la façon dont j'envoie le POST. Quelqu'un de plus intelligent et plus expérimenté n'est pas difficile à trouver :)