Я пытаюсь сгенерировать новый токен и сохранить его в моей таблице токенов базы данных, использующей MySQL в качестве DMS. Я генерирую токен с использованием библиотеки jwt. Я не получаю ошибок, и мой сгенерированный токен не генерируется. Но новый пользователь генерируется. Эта функция обработчика маршрута отвечает за создание новой учетной записи пользователя. Это также создает новый маркер для этого пользователя, позволяющий ему / ей выполнять действия, требующие аутентификации.
Я пытался использовать все возможные способы, чтобы настроить метод установки для модели с помощью sequelize. Я прочитал документы и использовал оба пути, и ни один не работал. Два способа set () и setterMethod: ... код идет здесь.
Я также попытался создать экземпляр и затем получить доступ к методу setter, но это все равно не сработало.
Наконец, я пытался всеми возможными способами получить сообщение об ошибке на терминале, используя блок 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()
}
})
Печально то, что я не получаю ошибок. Что делает его таким трудным для отладки.