我尝试在MongoDB中使用Mongoose进行注册,我得到了这个错误,这可能与我保存在集合中的数据类型有关,这会产生这种冲突。
错误
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);
}
};发布于 2021-05-29 22:07:28
正如错误所说,您没有发布任何数据,这就是为什么这意味着您的req.body对象很可能没有姓氏、电子邮件、出生和密码。
并且您已经将它们指定为Schema中的“必填”字段。这意味着如果字段为空,mongoose将不会创建用户。除非您指定了默认值。
surname: Path `surname` is required., email: Path `email` is required., birth: Path `birth` is required., password: Path `password` is required.https://stackoverflow.com/questions/67538761
复制相似问题