为了账号安全,请及时绑定邮箱和手机立即绑定

您如何正确导出/导入 NodeJs 类及其各自的功能

您如何正确导出/导入 NodeJs 类及其各自的功能

潇潇雨雨 2022-07-08 10:44:34
背景:我正在使用带有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 = Databaseapi.js:这是我的应用程序后端逻辑的位置。...var Database = require('../classes/Database')//This is the route responsible for invoking my database queryrouter.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)) })
查看完整描述

1 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

query是一种可以在实际对象上调用的方法。你称之为()的方式,它必须是类的静态方法DatabaseDatabaseDatabase.queryDatabase

要使用query,您必须在Database某处进行初始化,例如使用const database = new Database(config);. 然后您可以访问该对象并调用querydatabase.query(...)


查看完整回答
反对 回复 2022-07-08
  • 1 回答
  • 0 关注
  • 208 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号