Показать сообщение отдельно
  #4 (permalink)  
Старый 10.01.2026, 17:22
Кандидат Javascript-наук
Отправить личное сообщение для riaron86 Посмотреть профиль Найти все сообщения от riaron86
 
Регистрация: 27.11.2021
Сообщений: 133

теперь выдает
<!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();
Ответить с цитированием