javascript - ejs模板数据未插入到mongodb中

标签 javascript node.js mongodb express

我正在尝试使用 mongoose 将数据从 ejs 模板插入到 mongodb。 单击提交按钮后页面重定向成功,我的数据也显示在 url 中,但没有插入到 MongoDB 集合中。

app.js

 var express = require('express');
    var path = require('path');
    var favicon = require('serve-favicon');
    var logger = require('morgan');
   var cookieParser = require('cookie-parser');
   var bodyParser = require('body-parser');
   var mongoose = require('mongoose');
   var mongodb = require('mongoDB');

   var routes = require('./routes/index');
   var users = require('./routes/users');

   var app = express();

   // view engine setup
   app.set('views', path.join(__dirname, 'views'));
   app.set('view engine', 'ejs');

   // database connection
   mongoose.connect('mongodb://localhost/company');
   var mySchema=new mongoose.Schema({
   name:String,
   email:String
   });
   var user=mongoose.model('emp', mySchema);


   // uncomment after placing your favicon in /public
   //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
   app.use(logger('dev'));
   app.use(bodyParser.json());
   app.use(bodyParser.urlencoded({ extended: false }));
   app.use(cookieParser());
   app.use(express.static(path.join(__dirname, 'public')));

   app.use('/', routes);
   app.use('/users', users);

   // catch 404 and forward to error handler
   app.use(function(req, res, next) {
   var err = new Error('Not Found');
   err.status = 404;
   next(err);
   });

   // error handlers

  // development error handler
  // will print stacktrace
  if (app.get('env') === 'development') {
  app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: err
    });
  });
  }

  // production error handler
  // no stacktraces leaked to user
  app.use(function(err, req, res, next) {
   res.status(err.status || 500);
  res.render('error', {
    message: err.message,
    error: {}
  });
  });


  module.exports = app;

索引.ejs

 <!DOCTYPE html>
  <html>
  <head>
     <title><%= title %></title>
     <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>

  <div style="margin:0 auto ; width:50%; padding:20px">
    <form action="/users">
    <label>Name</label>
    <input type="text" name="name">
      <br /> <br /> <br /> <br />
    <label>Email</label>
    <input type="text" name="email">
      <br /> <br /> <br /> <br />
    <button>submit</button>
      </form>
    </div>
  </body>
  </html>

index.js

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

  /* GET home page. */
  router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
  });
  router.post('/users', function(req, res, next) {
  new user({
   name:req.body.name,
   email:req.body.email

  }).save(function(err, docs){
   if(err)
   {
     res.json(err);
   }
   else
   {
     res.send('success Inserted !');
   }
  });
  });

   module.exports = router;

最佳答案

首先,您必须定义表单方法 Post 因为您定义了路由类型 post 。在您的index.js 文件中,您没有初始化用户对象和数据连接,因此您必须在app.js 文件中定义的index.js 文件中初始化用户和数据连接。从 app.js 文件中删除用户初始化和数据连接。

代码:

index.ejs

 <!DOCTYPE html>
  <html>
  <head>
     <title><%= title %></title>
     <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>

  <div style="margin:0 auto ; width:50%; padding:20px">
    <form action="/users" method="post">
    <label>Name</label>
    <input type="text" name="name">
      <br /> <br /> <br /> <br />
    <label>Email</label>
    <input type="text" name="email">
      <br /> <br /> <br /> <br />
    <button>submit</button>
      </form>
    </div>
  </body>
  </html>

index.js

  var express = require('express');
  var router = express.Router();
   // database connection
   mongoose.connect('mongodb://localhost/company');
   var mySchema=new mongoose.Schema({
   name:String,
   email:String
   });
   var user=mongoose.model('emp', mySchema);
      /* GET home page. */
      router.get('/', function(req, res, next) {
      res.render('index', { title: 'Express' });
      });
      router.post('/users', function(req, res, next) {
      new user({
       name:req.body.name,
       email:req.body.email

      }).save(function(err, docs){
       if(err)
       {
         res.json(err);
       }
       else
       {
         res.send('success Inserted !');
       }
      });
      });

       module.exports = router;

关于javascript - ejs模板数据未插入到mongodb中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35169114/

相关文章:

javascript - 使用 YUI3 时捕获 Javascript 语法错误

javascript - 将给定的分钟值从 api 转换为正确的小时格式并显示在 UI 上并以 api 分钟格式发布相同的小时数

javascript - 安装 Spectron

node.js - inversify-restify-utils Controller 中的空上下文和主体

javascript - 如何返回变量并同时重置/删除它

mongodb - 使用 Spring Data Mongodb,是否可以在不拉取和迭代整个集合的情况下获得字段的最大值?

node.js - 如何使用node js从mongo获取记录中的特定信息?

javascript - 使用这种语法的原因是什么 (0, _.Em)();

mysql - MongoDB存储以及MySQL XPath功能

javascript - Jquery .click 功能不起作用