简体   繁体   English

使用 mongoose 插入新数据时出现验证错误

[英]Validation Error when insert new data using mongoose

I want to insert new data into a collection, but when I submit the form, I get a validation error.我想将新数据插入到集合中,但是当我提交表单时,出现验证错误。

ValidationError: Teacher validation failed: subject: Please enter subject, second_subject: Path second_subject is required. ValidationError:教师验证失败:主题:请输入主题,第二主题:路径second_subject是必需的。

HTML File HTML 文件

<form action="/register" method="post" id="form3">
    <div class="form-group"><label class="small mb-1">Full name</label><input class="form-control py-4" style="width: 50%;" type="name" name="name" placeholder="Enter full name" /></div>
    <div class="form-group"><label class="small mb-1" >Email</label><input class="form-control py-4" style="width: 50%;" type="username"  name="username" placeholder="Enter email address" /></div>
    <div class="form-group"><label class="small mb-1" >Password</label><input class="form-control py-4" style="width: 50%;" type="password"  name="password" placeholder="Password" /></div>
    <input type="hidden" id="roles" name="roles" value="Creator">
    <div class="form-group"><label class="small mb-1" >Select Primary Subject</label>
        <select name="subject" class="form-control" style="width: 30%;" id="subject">
            <option value="">-- Select Subject --</option>
            <% subject.forEach(function (subject) { %>
            <option value= "" ><%= subject.subject_name %></option>
            <% }) %>
        </select>
    </div>
    <div class="form-group"><label class="small mb-1" >Select Secondary Subject</label>
        <select name="secondary_subject" class="form-control" style="width: 30%;" id="secondary_subject">
            <option value="">-- Select Subject --</option>
            <% subject.forEach(function (subject) { %>
            <option value= "" ><%= subject.subject_name %></option>
            <% }) %>
        </select>
    </div>
    <div class="form-group"><label class="small mb-1" >Preferred Level of study</label>
        <select name="level" class="form-control" style="width: 30%;" id="level">
            <option value="">-- Select level --</option>
            <option value="Level 1">Level 1</option>
            <option value="Level 2">Level 2</option>
        </select>
    </div>
    <div class="form-group mt-4 mb-0"><input type="submit" value="Submit" style="width: 20%;" a class="btn btn-primary btn-block" href="/admin_user"></div>           
</form>

Route路线

if(req.body.subject && req.body.secondary_subject,req.body.level){
    var teacherData = {
        subject: req.body.subject,
        second_subject: req.body.secondary_subject,
        level: req.body.level,
        userId:req.session.userId,
    }
    Teacher.create(teacherData, function (err, teacher){
        if(err){
            return next(err)
        }else
        {
            console.log('Teacher details added'+teacher)
            return res.redirect('/admin_user');
        }
    });
}else{
    var err = new Error('All fields have to be filled out');
    err.status = 400;
    return next(err);
}

Schema架构

var TeacherSchema = new mongoose.Schema ({

    subject: {
        type:String,
        required:true,
    },

    level: {
        type:String,
        required:true,
    },


    second_subject: {
        type:String,
        required:true,
    },

    userId:{
        type:String,
        required:true,
    },

});

In your Route file, check for both "not null" and "not equal to empty string".在您的Route文件中,检查“not null”和“not equal to empty string”。 This would ensure that empty strings are not entered to your database.这将确保不会将空字符串输入到您的数据库中。

 if (req.body.subject.= null && req.body.subject.== "" && req.body.secondary_subject.= null && req.body.secondary_subject.== "" && req:body.level.= null && req,body:level.== "") { var teacherData = { subject. req,body:subject. second_subject. req,body:secondary_subject. level. req,body.level, userId, req.session.userId; } Teacher;create(teacherData; function(err. teacher) { if (err) { return next(err) } else { console;log('Teacher details added' + teacher) return res;redirect('/admin_user'); } }); } else { var err = new Error('All fields have to be filled out'); err.status = 400; return next(err); }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM