首页 > 解决方案 > 猫鼬:ValidatorError:路径是必需的

问题描述

我尝试使用 Mongoose 在 MongoDB 中进行注册,但出现此错误,它可能与我保存在集合中的数据类型有关,这会产生此冲突。

错误

Error: User validation failed: name: Cast to string failed for value "{...}" at path "name", surname: Path `surname` is required., email: Path `email` is required., birth: Path `birth` is required., password: Path `password` is required.

和我的架构

const mongoose = require('mongoose');
const { Schema, model } = mongoose;
const AutoIncrement = require('mongoose-sequence')(mongoose);
const userSchema = new Schema(
    {
        name: {
            type: String,
            required: 'Please enter your name',
            unique: true,
            trim: true
        },
        surname:{
            type:String,
            required: true,
            trim: true
        },
        email:{
            type:String,
            required: true,
        },
        birth:{
            type:Date,
            required: true  
        },
        password:{
            type:String,
            required: true,
        }
    }, {
        timestamps: true
    }
);
userSchema.plugin(AutoIncrement, {id:'order_seq',inc_field: 'order'});
module.exports = model('User', userSchema);

这是我进行查询的地方,错误让我明白所有字段都没有被集合承认

const userCtrl = {};

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

userCtrl.createUser = async (req, res) => {
    console.log(req.body);
    try {
        const { username } = req.body;
        console.log(username);
        const newUser = new User({
            name:req.body.name,
            surname:req.body.surname,
            email:req.body.email,
            birth:req.body.birth,
            password:req.body.password,
        });
        await newUser.save();
        res.json('User created');
    } catch (e) {
        console.log(e)
        res.json(e.errmsg);
    }
};

标签: node.jsmongodbmongoose

解决方案


正如错误所说,您没有发布任何数据,这就是为什么这意味着您的req.body对象很可能没有姓氏、电子邮件、出生和密码。

并且您已将它们指定为架构中的“必需”字段。这意味着如果字段为空,猫鼬将不会创建用户。除非您指定默认值。

surname: Path `surname` is required., email: Path `email` is required., birth: Path `birth` is required., password: Path `password` is required.


推荐阅读