节点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浏览器崩溃
发布评论