表格不保存到MongoDB

时间:2017-08-16 16:52:23

标签: node.js mongodb express

我一直试图让表单提交到数据库,但每次提交时都只保存一个id。

以下是我的app.js文件中的代码,用于表单提交的路径。

    // 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);
   });

});

我使用的模型是:

    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);

这些应该正确对齐,还是基于此?我是节点和表达的新手,所以学习很有趣。至于我如何决定代码的模型和布局,它主要来自我之前作为课程一部分所做的项目。我写了上面的代码,但引用了我认为这是对旧代码说出来的最佳方式。

我知道变量都在拉数据,因为我在console.log(variableName)中测试了它。该模型看起来对我来说,但也许我错过了一些东西。

1 个答案:

答案 0 :(得分:0)

您应该使用在模型中使用的相同变量名称。你的代码应该是这样的。此代码非常适合您。

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);
});