我正在使用带有express和docker 的三层架构来实现一个网络应用程序。我也在使用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("/")
}
})
}
})
但在这里我收到一个错误,指出 result 为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)
}
})
}
回调的第一个参数应该是发生的任何错误,因此当查询成功时它应该为空!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句