Ошибка проверки системы - Узел / Express / Mongoose - PullRequest
0 голосов
/ 30 января 2020

Когда я отправляю свою форму, я получаю следующую ошибку: Ошибка [ValidationError]: сбой проверки системы: требуется lastName: путь lastName., FirstName: путь firstName требуется.

Я не уверен, что является причиной этого, когда я console.log (formData) я получаю данные, которые я отправил в форму.

Приложение. 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 ]

2 голосов
/ 30 января 2020

Единственная причина, по которой вы получили какую-то ошибку, это то, что вы опечатали свои данные формы. Это должно быть firstName и lastName, убедитесь, что оно совпадает с вашим полем схемы, а затем Убедитесь, что ваш 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);
    });
});

Я надеюсь, что это может помочь вам.

0 голосов
/ 30 января 2020
app.post('/post-feedback', (req, res) => {

   const system = new System(req.body);

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

Я думаю, что приведенный выше код должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...