Я пытаюсь создать новый токен и сохранить его в своей таблице токенов базы данных, которая использует MySQL в качестве DMS. Я генерирую токен с помощью библиотеки jwt. Я не получаю ошибок, и мой сгенерированный токен не генерируется. Но новый пользователь создается. Эта функция обработчика маршрута отвечает за создание новой учетной записи пользователя. Что также создает новый токен для этого пользователя, чтобы позволить ему / ей выполнять действия, требующие аутентификации.
Я пробовал всеми возможными способами настроить метод установки для модели с помощью sequelize. Я прочитал документы и использовал оба способа, и ни один из них не работал. Двумя способами являются set () и setterMethod: ... здесь идет код. Я также попытался создать экземпляр, а затем получить доступ к методу установки, но это все еще не сработало. Наконец, я пробовал все возможные способы получить сообщение об ошибке, отображаемое на терминале, используя блок try и catch, но мне не удалось его создать. Только что я попытался записать console.log «hello world» в методе установки generateAuthToken, но не получил это сообщение на сервере. Итак, я думаю, что проблема связана с тем, что программа не может распознать это имя функции.
Вот моя модель токена, определенная с помощью библиотеки sequelize:
const jwt = require('jsonwebtoken')
const sequelize = require("../db/sequelize")
const User = require("./user");
const TokenSchema = sequelize.define("token", {
userId: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: 'User',
key: 'id'
}
},
token: {
type: Sequelize.STRING,
allowNull: false
}
}, {
tableName: 'tokens',
classMethods: {
associate : function(models) {
TokenSchema.belongsTo(models.User)
}
},
setterMethods: {
async generateAuthToken(user) {
const token = await jwt.sign({ id: user.id }, process.env.JWT_SECRET)
this.setDataValue('token', token);
this.setDataValue('userId', user.id);
},
}
})
module.exports = TokenSchema
Вот пользовательский маршрут, который вызвал метод установки generateAuthToken из модели токена:
const express = require('express')
const multer = require('multer')
// const sharp = require('sharp')
const User = require('../models/user')
const Token = require('../models/token')
const auth = require('../middleware/auth')
const { sendWelcomeEmail, sendCancelationEmail } = require('../emails/sendEmail')
const router = new express.Router()
router.post('/users', async (req, res) => {
const user = new User(req.body)
try {
await user.save()
await Token.generateAuthToken(user.id)
res.status(201).send({ user })
} catch (e) {
res.status(400).send()
}
})
Печально то, что я не получаю ошибок. Что затрудняет отладку.