на ноде работаю с базой mysql через sequelize но при запросе выходит ошибка
TypeError: newuser.setTokenModel is not a function
в то время как setTokenModel должен генерить сам sequelize
import { DataTypes } from "sequelize";
import {sequelize} from '../db/connection.js'
export const TokenModel = sequelize.define("token", {
id: {type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true, required: true},
user: {type: DataTypes.INTEGER, required: true},
refreshToken: {type: DataTypes.STRING, required: true}
});
import { DataTypes } from "sequelize";
import {sequelize} from '../db/connection.js'
import { TokenModel } from "./token.model.js";
export const UsersModel = sequelize.define("users", {
email: {type: DataTypes.STRING, unique: true, required: true},
password: {type: DataTypes.STRING, required: true},
isActivated: {type: DataTypes.BOOLEAN, defaultValue: false},
activationLink: {type: DataTypes.STRING}
});
UsersModel.hasOne(TokenModel, {onDelete: 'cascade'})
sequelize.sync().then(() => {
console.log('table created successfully!');
}).catch((error) => {
console.error('Unable to create table : ', error.sqlMessage);
});
import {UsersModel} from '../models/users.model.js'
import {TokenModel} from '../models/token.model.js'
import bcrypt from 'bcrypt'
import { v4 as uuidv4 } from 'uuid'
import mailService from './mail-service.js'
import tokenService from './token-service.js'
import UserDto from '../dtos/user-dto.js'
class UserService {
async registration(email, password) {
const user = await UsersModel.findOne({email})
if(user) {
throw new Error (`Пользователь с почтой ${email} уже существует`)
}
const hashPassword = await bcrypt.hash(password, 3)
const activationLink = uuidv4()
await UsersModel.create({email, password: hashPassword, activationLink})
.then(newuser=>{
const userDto = new UserDto(newuser.dataValues) // id, email, isActivated
const tokens = tokenService.generateTokens({...userDto})
TokenModel.create({user: userDto.id, refreshToken: tokens.refreshToken}).then(token=>{
newuser.setTokenModel(token).catch(err=>console.log(err));
});
}).catch(err=>console.log(err));
await mailService.sendActivationMail(email, activationLink)
return {...tokens, user: userDto}
}
}
export default new UserService()
newuser.setTokenModel(token).catch(err=>console.log(err));
^
TypeError: newuser.setTokenModel is not a function