最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Mongoose ValidationError:验证失败:需要路径

IT培训 admin 18浏览 0评论

Mongoose ValidationError:验证失败:需要路径

当我在Web应用程序中以与我的mongoDB模式有关的ejs形式输入信息时,出现错误:

错误即时消息:

ValidationError: Subscriber validation failed: grade1: Path `grade1` is required., grade2: Path `grade2` is required., grade3: Path `grade3` is required., grade4: Path `grade4` is required.

我的订户模式:

const mongoose = require("mongoose");
const subscriberSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  grade1: {
    type: String,
    required: true
  },
  grade2: {
    type: String,
    required: true
  },
  grade3: {
    type: String,
    required: true
  },
  grade4: {
    type: String,
    required: true
  }
});

subscriberSchema.methods.getInfo = function() {
  return `Name: ${this.name} grade1: ${this.grade1} grade2: ${this.grade2} grade3: ${this.grade3} grade4: ${this.grade4}`;
};

subscriberSchema.methods.findLocalSubscribers = function() {
  return this.model("Subscriber")
    .find({
      name: this.name
    })
    .exec();
};

ejs形式:

<div class="col-sm-6">
  <h1>Enter Student Name and Grades</h1>
  <p>Enter the student's name and grades for the first 4 CSC courses:</p>
  <form class="subscription-form" action="/subscribers/create" method="post">
    <input type="text" name="name" placeholder="Name" autofocus>
    <input type="text" grade1="grade1" placeholder="CSC141 Grade" required>
    <input type="text" grade2="grade2" placeholder="CSC142 Grade" required>
    <input type="text" grade3="grade3" placeholder="CSC240 Grade" required>
    <input type="text" grade4="grade4" placeholder="CSC241 Grade" required>
    <input type="submit" name="submit">
  </form>
</div>

订阅者/在订阅者控制器中创建:

  create: (req, res, next) => {
    let subscriberParams = {
      name: req.body.name,
      grade1: req.body.grade1,
      grade2: req.body.grade2,
      grade3: req.body.grade3,
      grade4: req.body.grade4
    };
    Subscriber.create(subscriberParams)
      .then(subscriber => {
        res.locals.redirect = "/subscribers";
        res.locals.subscriber = subscriber;
        next();
      })
      .catch(error => {
        console.log(`Error saving subscriber: ${error.message}`);
        next(error);
      });
  },
...

我是mongoDB / nodejs / ejs的新手,所以我想知道我在做什么错。

回答如下:它适用于name,因为您正在使用HTML格式name格式,请尝试:

<input type="text" name="grade1" placeholder="CSC141 Grade" required> <input type="text" name="grade2" placeholder="CSC142 Grade" required> <input type="text" name="grade3" placeholder="CSC240 Grade" required> <input type="text" name="grade4" placeholder="CSC241 Grade" required>

Mongoose ValidationError:验证失败:需要路径

当我在Web应用程序中以与我的mongoDB模式有关的ejs形式输入信息时,出现错误:

错误即时消息:

ValidationError: Subscriber validation failed: grade1: Path `grade1` is required., grade2: Path `grade2` is required., grade3: Path `grade3` is required., grade4: Path `grade4` is required.

我的订户模式:

const mongoose = require("mongoose");
const subscriberSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  grade1: {
    type: String,
    required: true
  },
  grade2: {
    type: String,
    required: true
  },
  grade3: {
    type: String,
    required: true
  },
  grade4: {
    type: String,
    required: true
  }
});

subscriberSchema.methods.getInfo = function() {
  return `Name: ${this.name} grade1: ${this.grade1} grade2: ${this.grade2} grade3: ${this.grade3} grade4: ${this.grade4}`;
};

subscriberSchema.methods.findLocalSubscribers = function() {
  return this.model("Subscriber")
    .find({
      name: this.name
    })
    .exec();
};

ejs形式:

<div class="col-sm-6">
  <h1>Enter Student Name and Grades</h1>
  <p>Enter the student's name and grades for the first 4 CSC courses:</p>
  <form class="subscription-form" action="/subscribers/create" method="post">
    <input type="text" name="name" placeholder="Name" autofocus>
    <input type="text" grade1="grade1" placeholder="CSC141 Grade" required>
    <input type="text" grade2="grade2" placeholder="CSC142 Grade" required>
    <input type="text" grade3="grade3" placeholder="CSC240 Grade" required>
    <input type="text" grade4="grade4" placeholder="CSC241 Grade" required>
    <input type="submit" name="submit">
  </form>
</div>

订阅者/在订阅者控制器中创建:

  create: (req, res, next) => {
    let subscriberParams = {
      name: req.body.name,
      grade1: req.body.grade1,
      grade2: req.body.grade2,
      grade3: req.body.grade3,
      grade4: req.body.grade4
    };
    Subscriber.create(subscriberParams)
      .then(subscriber => {
        res.locals.redirect = "/subscribers";
        res.locals.subscriber = subscriber;
        next();
      })
      .catch(error => {
        console.log(`Error saving subscriber: ${error.message}`);
        next(error);
      });
  },
...

我是mongoDB / nodejs / ejs的新手,所以我想知道我在做什么错。

回答如下:它适用于name,因为您正在使用HTML格式name格式,请尝试:

<input type="text" name="grade1" placeholder="CSC141 Grade" required> <input type="text" name="grade2" placeholder="CSC142 Grade" required> <input type="text" name="grade3" placeholder="CSC240 Grade" required> <input type="text" name="grade4" placeholder="CSC241 Grade" required>

发布评论

评论列表 (0)

  1. 暂无评论