В настоящее время я могу просто войти в систему с ранее созданными учетными данными пользователя и использовать приложение как обычно, но не могу создать нового пользователя.Я использую React.js на стороне клиента и Express API на серверной части.Я получаю ошибку проверки Мангуста.Вся аутентификация шла с шаблоном, который мы использовали в курсе, и я не коснулся ни одного из этих файлов.Я даже вернулся и сравнил деревья истории коммитов, чтобы убедиться, что ничего не изменилось.
Вот моя пользовательская схема и маршрут регистрации.Я пытался исключить уникальность из модели, и это не повлияло на нее.Я знаю, что есть много потенциальных мест, где что-то может пойти не так, но если у кого-то есть какие-либо предложения по потенциальным вопросам, я был бы всегда благодарен!Я консоль зарегистрировал req.body.credentials в рамках регистрации, и отправляемые данные выглядят неплохо.
Код ошибки: 422 Ошибка на стороне необработанного сервера Entity: «Полученные параметры не прошли проверку Mongoose»
const mongoose = require('mongoose')
const { petSchema } = require('./pet.js')
const { pictureSchema } = require('./picture.js')
const userSchema = new mongoose.Schema({
email: {
type: String,
required: true,
unique: true
},
hashedPassword: {
type: String,
required: true
},
token: String,
pets: [petSchema],
pictures: [pictureSchema]
}, {
timestamps: true,
toObject: {
// remove `hashedPassword` field when we call `.toObject`
transform: (_doc, user) => {
delete user.hashedPassword
return user
}
}
})
module.exports = mongoose.model('User', userSchema)
// SIGN UP
// POST /sign-up
router.post('/sign-up', (req, res) => {
// start a promise chain, so that any errors will pass to `handle`
console.log(req.body.credentials)
Promise.resolve(req.body.credentials)
// reject any requests where `credentials.password` is not present, or where
// the password is an empty string
.then(credentials => {
if (!credentials ||
!credentials.password ||
credentials.password !== credentials.password_confirmation) {
throw new BadParamsError()
}
})
// generate a hash from the provided password, returning a promise
.then(() => bcrypt.hash(req.body.credentials.password, bcryptSaltRounds))
.then(hash => {
// return necessary params to create a user
return {
email: req.body.credentials.email,
hashedPassword: hash
}
})
// create user with provided email and hashed password
.then(user => User.create(user))
// send the new user object back with status 201, but `hashedPassword`
// won't be sent because of the `transform` in the User model
.then(user => res.status(201).json({ user: user.toObject() }))
// pass any errors along to the error handler
.catch(err => handle(err, res))
})