Я пытаюсь создать простое приложение, которое требует регистрации пользователя и функциональности входа в систему. Я определил пользовательскую схему следующим образом:
// User Schema
const userSchema = new mongoose.Schema({
username: {
type: String,
required: true,
trim: true,
},
password: {
type: String,
required: true,
minlength: 7,
trim: true,
validate(value) {
if (value.toLowerCase().includes('password')) {
throw new Error('Password cannot contain "password"')
}
}
},
email: {
type: String,
unique: true,
required: true,
trim: true,
lowercase: true,
validate(value) {
if (!validator.isEmail(value)) {
throw new Error('Email is invalid')
}
}
},
name: {
// TODO : Add validation for name
type: String,
required: true
},
mobile:{
// TODO : Add validation for mobile numbers
type: String
}
}, {
timestamps: true
});
userSchema.pre('save', async function (next) {
const user = this
console.log("inside pre")
if (user.isModified('password')) {
console.log("about to hash ", user.password )
user.password = await bcrypt.hash(user.password, 8)
console.log("hashed pwd ", user.password )
}
next();
})
, и в моих маршрутах у меня есть следующее:
router.post('/users', async (req, res) => {
const user = new User(req.body)
try {
console.log("about to save ")
await user.save()
console.log("About to gen token")
const token = await user.generateAuthToken()
console.log("About to send res")
res.status(201).send({ user, token })
} catch (e) {
res.status(400).send(e)
}
})
Исходный пароль и открытый текст печатаются, но ответ никогда не получается послал. Строка сразу после вызова функции сохранения никогда не выполняется. Почему это может происходить?