首页 > 解决方案 > 使用带有 nodejs 的 mysql 准备查询时,Web 浏览器崩溃

问题描述

我想将查询结果返回给数据库,我认为这将是一个承诺,然后在另一个文件中使用该承诺。这是我的模型代码(User.js):

User.prototype.login = function () {
    return new Promise((resolve, reject) => {
        pool.execute('SELECT * FROM `users` WHERE `username` = ? AND `password` = ?', [this.data.username, this.data.password], (err, attemptedUser) => {
            if (err) {
                pool.release();
               return reject(err);
            } else {
                pool.release();
               return resolve(attemptedUser);
            }
        });
    });
}

以及我的控制器文件(userController.js)中的代码:

const User = require('../models/User');
exports.login = (req, res) => {
let user = new User(req.body);
    user.login()
        .then((result) => {
            res.send(result);
        })
        .catch((err) => {
            res.send(err);
        });
};

但是当我点击登录按钮时,页面不会转到指定的 URL 并继续工作直到崩溃。问题出在哪里?

UPDATE-1 这是我的 db.js :

const mysql = require('mysql2/promise');
const dotenv = require('dotenv');
dotenv.config();

const pool = mysql.createPool({
    host: process.env.DB_HOST,
    user: process.env.DB_USERNAME,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_NAME,
    connectionLimit: 100
});

module.exports = pool;

标签: mysqlnode.jsexpress

解决方案


推荐阅读