Как получить учетную запись в базе данных mysql - PullRequest
0 голосов
/ 07 февраля 2020

Я реализую веб-приложение с использованием трехуровневой архитектуры с express и docker. Я также использую mysql для хранения учетных записей. Это моя initialize-database. sql file:

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)
)

На моем уровне доступа к данным У меня есть account-repository файл, который отправляет запросы в базу данных:

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)
        }
    })
}

Теперь в моем приложении. 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 . Что я делаю неправильно?

Заранее спасибо!

1 Ответ

1 голос
/ 07 февраля 2020

Это должно быть легко исправить, вам просто нужно изменить функцию 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 при успешном выполнении запроса!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...