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

编程入门 行业动态 更新时间:2024-10-09 19:17:45

[使用带有<a href=https://www.elefans.com/category/jswz/34/1771452.html style=节点js的mysql准备的查询时Web浏览器崩溃"/>

[使用带有节点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浏览器崩溃

本文发布于:2024-05-07 05:06:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754400.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:节点   浏览器   mysql   js   Web

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!