После изменения библиотеки Джои на Джой / хапи у меня возникла проблема с моей проверкой. Я не могу понять, как изменить его на более новые валидаторы. Продолжайте получать ту же ошибку.
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" });
});
});
}
};