node.js - 猫鼬: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);
}
};
解决方案
正如错误所说,您没有发布任何数据,这就是为什么这意味着您的req.body
对象很可能没有姓氏、电子邮件、出生和密码。
并且您已将它们指定为架构中的“必需”字段。这意味着如果字段为空,猫鼬将不会创建用户。除非您指定默认值。
surname: Path `surname` is required., email: Path `email` is required., birth: Path `birth` is required., password: Path `password` is required.
推荐阅读
- c# - 在.net Winforms应用程序中将SSRS报告另存为PDF而不呈现报告
- javascript - 链接/合并或(最坏情况)将 Javascript 应用程序转换为 angular(2,4,5) 应用程序的最简单/最佳方式
- css - 检索字体大小的表单页面
- jquery - 在 MVC 中维护级联下拉列表的最佳方法
- java - java - 如何在不删除Java中的尾随零的情况下查找双数小数点后的长度?
- jenkins - Jenkins 声明式管道 - 同时在多个节点上执行阶段
- c# - 同一系列的不同标签
- ruby - gem install - 致命错误:在 Mojave 中找不到“ruby/config.h”文件
- angularjs - 如何使用 ng-if 隐藏离子刷新器?
- swift - Xcode 构建错误:命令 /bin/sh 失败,退出代码为 1