Выполните SQL запрос за другим, используя NodeJS - PullRequest
0 голосов
/ 28 января 2020

У меня есть конечная точка, которая использует аутентификацию basi c для проверки пользователя. Как только это завершится успешно, я хочу выполнить другой запрос, но только если аутентификация прошла успешно. Проблема в том, что второй запрос не ждет, пока не будет выполнен запрос проверки пользователя. Как я могу сделать то, что я пытаюсь?

var auth = function (req, res, next) {
    function unauthorized(res) {
        res.set('WWW-Authenticate', 'Basic realm=Authorization Required');
        return res.send(401);
    }

    var user = basicAuth(req);

    if(!user || !user.name || !user.pass) {
        return unauthorized(res);
    }

    userName = user.name;
    userPassword = user.pass;

    return next();
};

app.get('/counties/', auth, function(req, res) {
    queryString = util.format('SELECT * from Users WHERE email = \'%s\' and PWDCOMPARE(N\'%s\', Password) = 1',  userName, userPassword);
    res.setHeader('Content-Type', 'application/json');
    res.set('Content-Type', 'application/json');
    endpointQuery(queryString, res);
    if (endpointQuery(queryString, res) === 1) {
        queryString = util.format('SELECT distinct county from name WHERE state_province = \'KY\' and county <> \'\' order by county');
        res.setHeader('Content-Type', 'application/json');
        res.set('Content-Type', 'application/json');
        dbQuery(queryString, res);
    } else {
        console.log('Not authorized!');
    }
});

function endpointQuery(query, response) {
    var config = {
        server: 'db server',
        database: 'db',
        user: 'user',
        password: 'password',
        requestTimeout: 300000,
        options: {
            encrypt: true
        }
    };

    var connection = new sql.Connection(config);
    connection.connect().then(function () {
        var req = new sql.Request(connection);
        req.query(query).then(function (recordset) {
            results = recordset;
            connection.close();

            // Convert results to JSON string
            var jsonString = JSON.stringify(results);
            // response.send(recordset);
            console.log('Results Length: ' + results.length);
            if (results.length > 0) {
                return 1;
            } else {
                return 0;
            }
        })
            .catch(function (err) {
                console.log('Error1: ' + err);
                connection.close();
                // response.send(err);
                return 0;
            });
    })
        .catch(function (err) {
            console.log('Error2: ' + err);
            // response.send(err);
            return 0;
        });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...