теперь выдает
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot POST /api/registration</pre>
</body>
сервер запускается без ошибок,
вот роутер
const Router=require('express').Router;
const userController=require('../controllers/user-controller');
const router= new Router();
const{body}=require('express-validator');
router.post('/api/registration',
body('email').isEmail(),
body('password').isLength({min:3,max:32}),
userController.registration);
router.post('/login',userController.login);
router.post('/logout',userController.logout);
router.get('/activate/:link',userController.activate);
router.get('/refresh',userController.refresh);
router.get('/users',userController.getUsers);
module.exports =router
вот контроллер
const userService=require('../service/user-service');
const{validationResult}=require('express-validator');
const ApiError=require('../exeptions/api-error');
class UserController{
async registration(req,res,next){
try {
const errors=validationResult(req);
if(!errors.isEmpty()){
return next(ApiError.BadRequest("Ошибка валидации",errors.array()));
}
const {email, password}=req.body;
const userData=await userService.registration(email,password);
res.cookie('refreshToken',userData.refreshToken,{maxAge:30*24*60*60*1000,httpOnly:true})
return res.json(userData);
}catch (e) {
next(e);
}
}
вот userservice
const {UserSchema} = require('../models/models');
const bcrypt=require('bcrypt');
const uuid=require('uuid');
const mailService=require('./mail-service');
const tokenService=require('./token-service');
const UserDto=require('../dtos/user-dto');
const ApiError=require('../exeptions/api-error');
class UserService {
async registration(email,password){
const candidate = await UserSchema.findOne({email});
if(candidate){
throw ApiError.BadRequest(`Пользователь с почтовым адресом ${email} уже существует`);
}
const hashPassword = await bcrypt.hash(password, 5)
const activationLink=uuid.v4();
const user = await UserSchema.create({email,password: hashPassword,activationLink,role:'user'});
// await mailService.sendActivationMail(email,`${process.env.API_URL}/api/activate/${activationLink}`);
const userDto=new UserDto(user);
const tokens=tokenService.generateTokens({...userDto});
await tokenService.saveToken(userDto.id,tokens.refreshToken);
return{...tokens,user:userDto}
}
вот модель\
const sequelize = require('../db')
const {DataTypes} = require('sequelize')
const UserSchema = sequelize.define('userschema', {
id: {type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
email: {type: DataTypes.STRING, unique: true,},
password: {type: DataTypes.STRING},
activationLink:{type: DataTypes.STRING,},
isActivated:{type: DataTypes.STRING,defaultValue:'false'},
role: {type: DataTypes.STRING, defaultValue: "USER"},
})
const TokenSchema = sequelize.define('tokenschema', {
id: {type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
refreshToken:{type: DataTypes.STRING,},
})
UserSchema.hasOne(TokenSchema)
TokenSchema.belongsTo(UserSchema)
module.exports = {
UserSchema,
TokenSchema,
}
index.php
const cors=require('cors');
const cookieParser=require('cookie-parser');
const router= require('./router/index');
const errorMiddleware=require('./middleware/error-middleware');
const PORT=process.env.PORT || 5000;
const app=express();
app.use(express.json());
app.use(cookieParser());
app.use(cors());
app.use('/api',router);
app.use(errorMiddleware);
const start=async()=>{
try{
await sequelize.authenticate()
await sequelize.sync()
app.listen (PORT,()=>console.log(`server started on Port=${PORT}`))
}catch (e){
console.log(e);
}
}
start();