Почему тайм-аут запроса MySQL, когда он не может найти данные? - PullRequest
3 голосов
/ 26 апреля 2019

Информация

У меня есть сервер expressjs, который использует sequelize для подключения к моей базе данных с некоторым токеном, чтобы сохранить соединение.Когда клиент отправляет существующий токен, запрос получает токен и позволяет перейти к следующей функции, но когда клиент отправляет пустой или неправильный токен, он блокируется на несколько минут и больше не отвечает.

запрос в серверной части

const Token = require('./models/token');

function isAuth(req, res, next) {
    if (req.cookies.token) {
        Token.findOne({where: {token: req.cookies.token}}).then(token => {
            console.log("TOKEN");
            if (!token) {
                console.log("2");
                res.clearCookie('token');
                res.redirect("/");
            } else
                next();
        })
    } else {
        console.log("1");
        res.redirect("/");
    }
};

Когда он выполняется хорошим токеном, он запускает первый console.log, но с недействительным токеном он не вызывает ни одного из них, но блокируется.

Маркер модели

var Sequelize = require('sequelize');
var sequelize = new Sequelize(process.env.DATABASE_URL);

var Token = sequelize.define('token', {
    token: {
        type: Sequelize.STRING,
        unique: true,
        allowNull: false
    }
});

sequelize.sync().then(() => {
    console.log('token table has been successfully created, if one doesn\'t exist');
}).catch(error => console.log('This error occured', error));

module.exports = Token;

Я не могу найти другой пример в Google, я нашел кое-что, но это не связано с моей проблемой, и даже когда я тестирую их, он все равно не будет работать.

Обновление

Когда я изменяю токен для удаления какого-либо символа, время ожидания увеличивается, но в запросе нет проблемы.
Я отправляю только в db a108 символов кода в качестве токена, и в БД есть только 15 записей.
Когда запрос получает 2 минуты, браузер отменяет его, и на сервере не отображается никаких ошибок.

Дисплей сервера

Executing (default): SELECT `id`, `token`, `createdAt`, `updatedAt` FROM `tokens` AS `token` WHERE `token`.`token` = 'token_invalid';
GET /api/loadUserCurrent - - ms - -
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...