系统验证失败-节点/快速/猫鼬

时间:2020-01-30 02:24:26

标签: node.js mongodb forms express mongoose

提交表单时,出现以下错误:错误[ValidationError]:系统验证失败:lastName:路径lastName是必需的。firstName:路径firstName是必需的。 / strong>

我不确定是什么原因造成的,当我console.log(formData)时,我将提交给表单的数据获取了。

App.js

const express = require('express')
const app = express();
const mongoose = require('mongoose');
const dotenv = require ('dotenv/config');

const System = require('./models/System');

app.use(express.urlencoded({ extended: true }));
app.use(express.json());

app.get('/', (req,res) => {
  res.render('index.ejs');
});


app.post('/post-feedback', (req, res) => {
  const formData = {
    firstame: req.body.firstName,
    lastname: req.body.lastName,
    assetTag: req.body.assetTag
  }

  const system = new System(formData);

  system.save()
    .then(result => {
      console.log(result);
    })
    .catch(err => {
      console.log(err);
    });
});

型号:

const mongoose = require('mongoose');

var SystemSchema = new mongoose.Schema({
    firstName: {
        type: String,
        required: true
    },
    lastName: {
        type: String,
        required: true
    },
    assetTag: {
        type: Number,
        required: true
    }
});

module.exports = mongoose.model('System', SystemSchema);

表格:

      <form action="/post-feedback" method="POST">
                  <div class="form-group">
                    <label for="firstName">First Name: </label>
                       <input type="text" class="form-control" id="firstName" name="firstName">  
                  </div>
                  <div class="form-group">
                    <label for="lastName">Last Name: </label>
                       <input type="text" class="form-control" id="lastName" name="lastName">  
                  </div>
                  <div class="form-group">
                    <label for="assetNum">Asset Tag: </label>
                       <input type="text" class="form-control" id="assetTag" name="assetTag">  
                  </div>
                    <button type="submit" name="submit" class="btn btn-primary">Submit</button>
                </form>

2 个答案:

答案 0 :(得分:2)

出现错误的唯一原因是因为您在formData上有错字。它必须为firstNamelastName,并确保它与“模式”字段相同,然后确定您的assetTag是一个数字,因为您的模式类型是数字

您可以在下面尝试以下代码:

app.post('/post-feedback', (req, res) => {
  const formData = {
    // you're typo here: firstame
    firstName: req.body.firstName,
    // you're typo here: lastname
    lastName: req.body.lastName,
    // must be number
    assetTag: parseInt(req.body.assetTag);
  }

  const system = new System(formData);

  system.save()
    .then(result => {
      console.log(result);
    })
    .catch(err => {
      console.log(err);
    });
});

我希望它能为您提供帮助。

答案 1 :(得分:0)

app.post('/post-feedback', (req, res) => {

   const system = new System(req.body);

  system.save()
    .then(result => {
      console.log(result);
    })
    .catch(err => {
      console.log(err);
    });
});

我认为上面的代码应该可行。