我有一个猫鼬模型,我想将我的请求正文数据传递给它,然后使用create函数将其添加到我的数据库中,但是它不起作用,并且不会给我任何错误,它只是在请求中存入了我的模特
const usersSchema = new mongoose.Schema({
firstname: {
type: String,
required: [true, "first name is required"],
trim: true,
minlength: {
value: 2,
message: "your first name could not be less than 2 characters!",
},
maxlength: {
values: 25,
message: "your first name could not be more than 25 characters!",
},
},
lastname: {
type: String,
required: [true, "last name is required"],
trim: true,
minlength: {
values: 2,
message: "your last name could not be less than 2 characters!",
},
maxlength: {
values: 35,
message: "your last name could not be more than 35 characters!",
},
},
username: {
type: String,
unique: [true, "username has already been used!"],
required: [true, "username is required!"],
lowercase: true,
trim: true,
minlength: {
values: 6,
message: "your username must be at least 6 characters",
},
maxlength: {
values: 35,
message: "your user name could not be bigger than 35 characters",
},
},
userType: {
type: String,
required: [true, "usertype is required"],
trim: true,
lowercase: true,
enum: {
values: ["user", "admin"],
message: "each user can only be admin or user",
},
},
password: {
type: String,
required: [true, "please enter a password for your account"],
select: false,
minlength: [8, "your password could not be less than 8 characters"],
maxlength: [64, "your password could not be more than 64 characters"],
},
confirmPassword: {
type: String,
required: [true, "please confirm your password"],
validate: {
validator: function (val) {
return this.password === val;
},
message: "your passwords are not same",
},
},
email: {
type: String,
lowercase: true,
trim: true,
unique: [true, "this email has already been used!"],
},
phoneNumber: {
type: String,
unique: [true, "this phone number has already been used!"],
minlength: [11, "phone numbers has the length of 11 characters!"],
maxlength: [11, "phone numbers has the length of 11 characters!"],
},
gender: {
type: String,
required: [true, "gender field could not be empty!"],
enum: {
values: ["male,female"],
message: "you must be either male or female!",
},
},
birthDate: {
type: Date,
},
confirmedEmail: {
type: Boolean,
required: [true, "email confirmation must be specified as true or false"],
},
confirmedPhone: {
type: Boolean,
required: [
true,
"phone number confirmation must be specified as true or false",
],
},
userTickets: [
{
matchId: {
type: String,
required: [true, "matchId could not be empty!"],
},
ticketId: {
type: String,
required: [true, "matchId could not be empty!"],
},
},
],
});
const userModel = mongoose.model("users", usersSchema);
module.exports = userModel;
这是我的控制器
exports.insertUser = async (req, res) => {
await userModel.create(req.body);
res.status(201).json({
status: "success",
message: "documents added to DB successfully",
});
};
我更改了模型,但可以使用,但不适用于该模型
像这样更改架构:
{
firstname: {
type: String,
required: [true, "first name is required"],
trim: true,
minlength: [
2,
"your first name could not be less than 2 characters!",
],
maxlength: [
25,
"your first name could not be more than 25 characters!"
]
},
lastname: {
type: String,
required: [true, "last name is required"],
trim: true,
minlength: [
2,
"your last name could not be less than 2 characters!",
],
maxlength: [
25,
"your last name could not be more than 25 characters!"
]
},
username: {
type: String,
unique: [true, "username has already been used!"],
required: [true, "username is required!"],
lowercase: true,
trim: true,
minlength: [
2,
"your user name could not be less than 2 characters!",
],
maxlength: [
35,
"your user name could not be more than 25 characters!"
]
},
userType: {
type: String,
required: [true, "usertype is required"],
trim: true,
lowercase: true,
enum: {
values: ["user", "admin"],
message: "each user can only be admin or user",
},
},
password: {
type: String,
required: [true, "please enter a password for your account"],
select: false,
minlength: [8, "your password could not be less than 8 characters"],
maxlength: [64, "your password could not be more than 64 characters"],
},
confirmPassword: {
type: String,
required: [true, "please confirm your password"],
validate: {
validator: function (val) {
return this.password === val;
},
message: "your passwords are not same",
},
},
email: {
type: String,
lowercase: true,
trim: true,
unique: [true, "this email has already been used!"],
},
phoneNumber: {
type: String,
unique: [true, "this phone number has already been used!"],
minlength: [11, "phone numbers has the length of 11 characters!"],
maxlength: [11, "phone numbers has the length of 11 characters!"],
},
gender: {
type: String,
required: [true, "gender field could not be empty!"],
enum: {
values: ["male", "female"],
message: "you must be either male or female!",
},
},
birthDate: {
type: Date,
},
confirmedEmail: {
type: Boolean,
required: [true, "email confirmation must be specified as true or false"],
},
confirmedPhone: {
type: Boolean,
required: [
true,
"phone number confirmation must be specified as true or false",
],
},
userTickets: [
{
matchId: {
type: String,
required: [true, "matchId could not be empty!"],
},
ticketId: {
type: String,
required: [true, "matchId could not be empty!"],
},
},
],
}
因为使用ofminlength
和maxlength
使用以下格式:
minlength: [
2,
"your first name could not be less than 2 characters!",
]
用values: ["male","female"]
性别,而不是values: ["male,female"]
因为你缺少"
在身体要求的样本中
{
"lastname": "name",
"firstname": "family",
"username": "asf3",
"userType": "admin",
"password": "123456789",
"confirmPassword": "123456789",
"email": "[email protected]",
"phoneNumber": "12123456789",
"gender": "female",
"birthDate": "2002-06-05",
"confirmedEmail": true,
"confirmedPhone": true,
"userTickets": []
}
req.body样品中使用firstName
,并lastName
用大写字母N
,但在模式中firstname
和lastname
使用try / catch这样:
exports.insertUser = async (req, res) => {
try {
let newUser = new userModel(req.body)
await newUser.save();
res.status(201).json({
status: "success",
message: "documents added to DB successfully",
});
} catch (error) {
console.log(error);
res.status(500).json({
status: "faild",
message: "something went wrong",
});
}
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句