'Mongoose unable to signup user
I got an ValidatorError when trying to add a new user using my API... I get the following error, even though the required fields are submitted. I can't really figure out why. I've added the relevant part of the code. Thanks.
Here is my code: userModel.js
const mongoose = require('mongoose');
const validator = require('validator');
const userSchema = new mongoose.Schema({
name: {
type: String,
required: [true, 'Please tell us your name!'],
},
mobile: {
type: Number,
required: [true, 'Please tell us your mobile number!'],
unique: true,
},
email: {
type: String,
unique: true,
lowercase: true,
validate: [validator.isEmail, 'Please provide a valid email'],
},
photo: {
type: String,
default: 'default.jpg',
},
role: {
type: String,
enum: ['user', 'guide', 'lead-guide', 'admin'],
default: 'user',
},
password: {
type: String,
required: [true, 'Please provide a password'],
minlength: 8,
select: false,
},
passwordConfirm: {
type: String,
required: [true, 'Please confirm your password'],
validate: {
//This only works on create and save
validator: function (el) {
return el === this.password;
},
message: 'Passwords are not the same!',
},
},
passwordChangedAt: Date,
passwordResetToken: String,
passwordResetExpires: Date,
active: {
type: Boolean,
default: true,
select: false,
},
referralCode: String,
address: String,
occupation: String,
education: String,
socialSiteLink: String,
maritalStatus: String,
religion: String,
language: String,
employmentStatus: String,
});
const User = mongoose.model('User', userSchema);
module.exports = User;
authControler.js
const User = require('../models/userModel');
const catchAsync = require('../utils/catchAsync');
exports.signup = catchAsync(async (req, res, next) => {
const newUser = await User.create(req.body);
res.status(201).json({
status: 'success',
data: {
user: newUser,
},
});
});
catchAsync.js
module.exports = (fn) => {
return (req, res, next) => {
fn(req, res, next).catch(next);
};
};
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
