使用 Express 获取表单数据到 mongoDB 数据库

Posted

技术标签:

【中文标题】使用 Express 获取表单数据到 mongoDB 数据库【英文标题】:Getting form data to mongoDB database using Express 【发布时间】:2018-09-03 20:43:04 【问题描述】:

我正在尝试从 html 表单获取表单数据并尝试将其保存到 MongoDB 数据库。我正在将 Nodejs 与 Express 一起使用。

可能是什么问题,每当我点击提交按钮时,它显示未找到并且它也没有保存数据。

这是我到目前为止所做的。

var express = require('express');
var router = express.Router();
var app = express();

var mongoose = require('mongoose');
var mongoDB = 'mongodb://127.0.0.1/my_database';
mongoose.connect(mongoDB);
mongoose.Promise = global.Promise;
var db=mongoose.connection;

db.on('error', console.error.bind(console, 'MongoDB connection error'));

var Schema = mongoose.Schema;
var questionSchema = new Schema(
  sectors: String,
  Qid: String,
  Question: String,
  enabled: Boolean
,collection:'questionPool');

var questionModel = mongoose.model('questionModel', questionSchema);


router.get('/', function(req,res)
  res.render("addQuest");
);

router.post('/add', (req,res) =>
  var questionData = new questionModel(req.body);
  questionData.save()
    .then(item =>
      res.send("Information saved to database");
    )
    .catch(err =>
      res.status(400).send("Unable to save to database");
    );
);

module.exports = router;

addQuest.jade

doctype html
html
  head
    title Add Questions
  body
    center
      form(method='post', action='/add')
        label Enter Your Name
        br
        input(type='text', name='sector', placeholder='Enter Sector', required='')
        input(type='text', name='Qid', placeholder='Enter Qid', required='')
        input(type='text', name='Question', placeholder='Enter your Question', required='')
        input(type='boolean', name='enabled', placeholder='Enabled or Disabled', required='')
        input(type='submit', value='Add Question')

【问题讨论】:

看看***.com/questions/26347394/… 嗨,请提供你得到的错误堆栈,然后我可以清楚地理解问题。 我想通了。这是我的错误。谢谢。 【参考方案1】:

我试过你的代码它对我来说工作正常。通过控制台检查 MongoDB 中是否存在名为 my_database 的数据库。您的代码没有问题。

【讨论】:

确实存在。一切正常,但是当我点击提交按钮时,它重定向到 localhost:3000/add 显示未找到的位置。这是我参考的文章:jenniferbland.com/… 想通了,在 router.post 中路由应该是 /addQuestions/add

以上是关于使用 Express 获取表单数据到 mongoDB 数据库的主要内容,如果未能解决你的问题,请参考以下文章

无法将多部分表单数据从 React 正确发送到 Express Js

在Express中get,post获取表单请求数据

nodejs / express:如何使用数据发布到外部表单?

用Express重写之前的留言本案例

通过表单从不同字段上传多个文件并使用express multer存储到mongodb数据库中

使用 NodeJS Express 时将表单数据插入 MySQL 数据库