javascript - 您如何正确导出/导入 NodeJs 类及其各自的功能
问题描述
背景:我正在使用带有nodejs的mysql。我希望经常使用嵌套查询,因此为了避免“回调地狱”,我制作了一个简单的类,其中包含由 Promises 支持的函数。
问题:将我的类导入所需的文件后,我尝试在路由query(sql, params){...}
内的 POST 请求中调用我的函数/login
,但是我收到以下错误:TypeError: Database.query is not a function
注意:我的所有代码都已编译,因此我的文件位置没有问题进口。当我运行程序时会出现问题。
代码:
Database.js
: 这就是我要导出到我的api.js
文件中的内容。
var mysql = require('mysql');
const configuration = {
host: 'localhost',
user: 'root',
password: '******',
database: 'myDB'
}
class Database {
constructor(configuration) {
this.connection = mysql.createConnection(configuration) //
}
query(sql, params) {
return new Promise(function(resolve, reject) {
this.connection.query(sql, params, function(err, result) {
if(err) return reject(err)
resolve(result)
})
})
}
}
module.exports = Database
api.js
:这是我的应用程序后端逻辑的位置。
.
.
.
var Database = require('../classes/Database')
//This is the route responsible for invoking my database query
router.post('/login', function(req,res,next) {
const query1 = "SELECT * FROM users WHERE username = ? AND pass = ?"
Database.query(query1, [req.body.username, req.body.password])
.then((result) => {
if (result.length) {
if (req.session.username) {
res.send('You are logged in')
} else {
req.session.username = req.body.username
res.send('You have successfully logged in')
}
} else {
res.send('Incorrect Credentials')
}
}).catch((err) => console.log(err))
})
解决方案
推荐阅读
- python - For 循环将所有值替换为 41
- css - 我的网页上有一个无法摆脱的水平滚动条
- ruby - MongoDB Atlas - Ruby 连接在 Kubernetes 中不起作用
- javascript - 显示 MarkJS 匹配的问题
- java - 尝试保存时出现Spring h2数据库错误
- c++ - 当 unique_ptr 两次调用 reset() 时会发生什么?
- html - BootStrap 4 使不同大小的图像在列中的大小相同
- sql-server - 检查 Crystal Reports 中的 SQL 表达式字段是否返回值
- msbuild - 如何在 BeforeBuild Exec 中使用 msbuild?
- javascript - 如何通过 Promise 传递 FileList