Изменить валидаторы с Joi на Joi / hapi - PullRequest
0 голосов
/ 08 февраля 2020

После изменения библиотеки Джои на Джой / хапи у меня возникла проблема с моей проверкой. Я не могу понять, как изменить его на более новые валидаторы. Продолжайте получать ту же ошибку.

UnhandledPromiseRejectionWarning: ReferenceError: значение не определено

Любая помощь или руководство будут оценены.

Это код :

const Joi = require("@hapi/joi");
const HttpStatus = require("http-status-codes");
const bcrypt = require("bcryptjs");
const jwt = require("jsonwebtoken");

const User = require("../models/userModels");
const Helpers = require("../Helpers/helper");
const dbConfig = require("../config/secret");

module.exports = {
  /*
    CreateUser(req, res) {
      console.log(req.body);
    }*/
  async CreateUser(req, res) {
    const schema = Joi.object().keys({
      username: Joi.string()
        .min(5)
        .max(10)
        .required(),
      email: Joi.string()
        .email()
        .required(),
      password: Joi.string()
        .min(5)
        .required()
    });

    const validation = schema.validate(req.body);
    res.send(validation);

    const userEmail = await User.findOne({
      email: Helpers.lowerCase(req.body.email)
    });

    if (userEmail) {
      return res
        .status(HttpStatus.CONFLICT)
        .json({ message: "Email already exist" });
    }

    const userName = await User.findOne({
      username: Helpers.firstUpper(req.body.username)
    });

    if (userName) {
      return res
        .status(HttpStatus.CONFLICT)
        .json({ message: "Username already exist" });
    }

    return bcrypt.hash(value.password, 10, (err, hash) => {
      if (err) {
        return res
          .status(HttpStatus.BAD_REQUEST)
          .json({ message: "Error hashing password" });
      }

      const body = {
        username: Helpers.firstUpper(value.username),
        email: Helpers.lowerCase(value.email),
        password: hash
      };

      User.create(body)
        .then(user => {
          const token = jwt.sign({ data: user }, dbConfig.secret, {
            expiresIn: "5h"
          });

          res.cookie("auth", token);
          res
            .status(HttpStatus.CREATED)
            .json({ message: "User created successfully", user, token });
        })
        .catch(err => {
          res
            .status(HttpStatus.INTERNAL_SERVER_ERROR)
            .json({ message: "Error occured" });
        });
    });
  }
};
...