Регистрация не работает и выдает ошибки параметров - PullRequest
0 голосов
/ 27 января 2019

В настоящее время я могу просто войти в систему с ранее созданными учетными данными пользователя и использовать приложение как обычно, но не могу создать нового пользователя.Я использую 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))
})

1 Ответ

0 голосов
/ 29 января 2019

решаемая.В одном из вложенных документов, которые у меня были внутри пользователя, был ключ со значением уникальным.Мне нужно было это устранить, потому что моя база данных индексировала пользователей с нулевым значением и выдавала повторяющуюся ошибку.Затем мне нужно было сбросить базу данных (я просто переименовал ее, чтобы протестировать), чтобы в ней не было сохраненных индексов с этой конфигурацией.Я также удалил свои коллекции в Heroku (к счастью, у меня там не было значительного количества данных, и это решение идеально подходило для моей ситуации).Теперь я могу снова регистрировать пользователей без повторяющихся ошибок ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...