javascript - 如何获取mysql数据库中的账户

标签 javascript mysql node.js express

我正在使用三层架构以及expressdocker来实现一个网络应用程序。我还使用 mysql 来存储帐户。这是我的 initialize-database.sql 文件:

CREATE TABLE accounts(
    personId INT NOT NULL,
    username VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL,
    userPassword VARCHAR(255) NOT NULL,    
    CONSTRAINT id_pk PRIMARY KEY (personId)
)

在我的数据访问层中,我有向数据库发送查询的帐户存储库文件:

const db = require('./db')
exports.getAccount = function(username, userPassword, callback){

    const query = "SELECT * FROM accounts WHERE username = ? AND userPassword = ?"
    const values = [username, userPassword]

    db.query(query, values, function(error, account){

        if(error){
            callback("DatabaseError", null)
        }else{
            callback(account)
        }
    })
}

现在,在我的 app.js 文件中,我想在登录时检查该帐户是否存在:

app.post("/login", function(request, response){

    var username = request.body.username
    var userPassword = request.body.password
    if (username && userPassword) {
        account.getAccount(username, userPassword, function(error, result){

            if(error){
                response.send("<h1>Error with database</h1>")
            }
            if(result){
                request.session.isLoggedIn = true
                request.session.username = username
                response.redirect("/")
            }
        })
    }   
})

但是这里我收到一个错误,指出结果为null。我究竟做错了什么?

提前致谢!

最佳答案

这应该是一个简单的修复,您只需更改 getAccount 函数,如下所示:

const db = require('./db')
exports.getAccount = function(username, userPassword, callback){

    const query = "SELECT * FROM accounts WHERE username = ? AND userPassword = ?"
    const values = [username, userPassword]

    db.query(query, values, function(error, account){

        if(error){
            callback("DatabaseError", null)
        }else{
            callback(null, account)
        }
    })
}

回调的第一个参数应该是发生的任何错误,因此当查询成功时,它应该为null!

关于javascript - 如何获取mysql数据库中的账户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60116479/

相关文章:

php - 带按钮的宽度表列 Bootstrap 3.3

mysql - 数据库表,越多越好?

mysql - 如何将参数传入和传出到mysql存储过程并在nodejs代码中返回存储过程结果

node.js - Npm 模块可在 Meteor.js 应用程序中流式传输 Twitter API 内容

javascript - 为什么IE8不处理iframe onload事件?

javascript - 动态 iframe 在 Firefox 上不可见

javascript - 在指令中访问编译后的模板

php - 如果您的 mysql 查询中有某些条件(Where 子句),如何创建分页?

javascript - Angular 在 ng-html-bind 中使用 marquee 标签

node.js - AWS Lambda : Can those event can be integrated with API Management Tools?