最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

[使用带有节点js的mysql准备的查询时Web浏览器崩溃

IT培训 admin 13浏览 0评论

[使用带有节点js的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;

回答如下:

我在这里看到的主要问题是如何导出模块。您正在执行exports而不是module.exports,因此,当您导入User时,您不是在导入函数,而是在导入空的JavaScript对象,因为默认情况下module.exports设置为该对象。

因此,在用户模型文件中,请确保您要像这样导出模型:

module.exports = User;

然后在您的用户控制器中,确保您按以下方式导出登录方法:

module.exports.login = (req, res) => ...

您的其余代码在正确导出后看起来应该可以正常工作。

[使用带有节点js的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;

回答如下:

我在这里看到的主要问题是如何导出模块。您正在执行exports而不是module.exports,因此,当您导入User时,您不是在导入函数,而是在导入空的JavaScript对象,因为默认情况下module.exports设置为该对象。

因此,在用户模型文件中,请确保您要像这样导出模型:

module.exports = User;

然后在您的用户控制器中,确保您按以下方式导出登录方法:

module.exports.login = (req, res) => ...

您的其余代码在正确导出后看起来应该可以正常工作。

发布评论

评论列表 (0)

  1. 暂无评论