2017-08-16 12 views
0

Ich habe versucht, ein Formular zum Übermitteln an die Datenbank zu erhalten, aber jedes Mal, wenn ich es einreiche, speichert es nur eine ID.Formular wird nicht in MongoDB gespeichert

Unten ist mein Code in meiner app.js-Datei für die Post-Route, die das Formular übermittelt.

// CREATE add new startup to database 
app.post("/startup-submit", function(req, res) { 
    // Get data from form 
    var startupname = req.body.startupname; 
    var url = req.body.url; 
    var shortdescription = req.body.shortdescription; 
    var longdescription = req.body.longdescription; 
    var techstack = req.body.techstack; 
    var foundeddate = req.body.foundeddate; 
    var blog = req.body.blog; 
    var twitter = req.body.twitter; 
    var facebook = req.body.facebook; 
    var linkedin = req.body.linkedin; 
    var email = req.body.email; 
    var foundername = req.body.foundername; 
    var foundersocialmedia = req.body.foundersocialmedia; 

    //Pass data through to page 
    var newStartup = { 
     startupname:startupname, 
     url: url, 
     shortdescription: shortdescription, 
     longdescription: longdescription, 
     techstack: techstack, 
     foundeddate: foundeddate, 
     blog: blog, 
     twitter: twitter, 
     facebook: facebook, 
     linkedin: linkedin, 
     email: email, 
     foundername: foundername, 
     foundersocialmedia: foundersocialmedia 
    }; 
    Startup.create(newStartup, function(err, newlyCreatedStartup){ 
     if(err){ 
      console.log(err); 
     } else { 
      // Redirect back to show all page 
      res.redirect("/startups"); 
     } 
     console.log(newlyCreatedStartup); 
    }); 

}); 

Mein Modell ich verwende ist:

var mongoose = require("mongoose"); 

var startupSchema = new mongoose.Schema({ 
    about_startup: { 
     startup_name: String, 
    url: String, 
    short_description: String, 
    long_description: String, 
    tech_stack: String, 
    date_founded: Date 
    }, 
    social_media: { 
     blog: String, 
     twitter: String, 
     facebook: String, 
     linkedin: String, 
     email: String, 
    }, 
    about_founder: { 
     name: String, 
     social_media_founder: String 
    } 
}); 

module.exports = mongoose.model("Startup", startupSchema); 

Diese sollten richtig ausgerichtet sind, oder bin ich Basis auf diese aus? Ich bin neu in Node und Express, also war das Lernen interessant. Wie ich mich für das Modell und das Layout des Codes entschieden habe, ist meistens von einem früheren Projekt, das ich im Rahmen eines Kurses gemacht habe. Ich habe den obigen Code geschrieben, aber referenziert, ich schätze, es ist der beste Weg, es zu dem alten Code zu sagen.

Ich weiß, dass die Variablen alle ziehen die Daten, weil ich console.log (Variablenname) jeder, um es zu testen. Das Modell sieht für mich richtig aus, aber vielleicht fehlt mir etwas.

+0

'newStartup' muss die gleichen Struktur- und Eigenschaftsnamen haben wie in' startupSchema' definiert. Sie sind derzeit sehr unterschiedlich. – JohnnyHK

+0

Oh .. habe das nicht einmal bemerkt. Damm, ich fühle mich jetzt dumm. Ist das richtig für die Route? 'var about_founder = { foundername: req.body.foundername, foundersocialmedia: req.body.foundersocialmedia };' Formular obigen Daten = unter 'var newStartup Seite passieren {about_startup: about_startup, social_media : social_media, about_funder: about_founder}; Startup.create (newStartup, function (err, newCreatedStartup) {' –

Antwort

0

Sie sollten die gleichen Variable Namen verwenden, die Sie in Modell verwendet. Dein Code sollte so sein. Dieser Code wird perfekt zu Ihnen passen.

var newStartup = { about_startup: {}, social_media: {}, about_founder: {}}; 
newStartup.about_startup.startup_name = req.body.startupname; 
newStartup.about_startup.url = req.body.url; 
newStartup.about_startup.short_description = req.body.shortdescription; 
newStartup.about_startup.long_description = req.body.longdescription; 
newStartup.about_startup.tech_stack = req.body.techstack; 
newStartup.about_startup.date_founded = req.body.foundeddate; 
newStartup.social_media.blog = req.body.blog; 
newStartup.social_media.twitter = req.body.twitter; 
newStartup.social_media.facebook = req.body.facebook; 
newStartup.social_media.linkedin = req.body.linkedin; 
newStartup.social_media.email = req.body.email; 
newStartup.about_founder.name = req.body.foundername; 
newStartup.about_founder.social_media_founder = req.body.foundersocialmedia; 

Startup.create(newStartup, function (err, newlyCreatedStartup) { 
    if (err) { 
     console.log(err); 
    } else { 
     // Redirect back to show all page 
     res.redirect("/startups"); 
    } 
    console.log(newlyCreatedStartup); 
}); 
Verwandte Themen