Nodejs Подтвердите пароль от БД и дождитесь ответа - PullRequest
0 голосов
/ 23 февраля 2019

Я создам веб-приложение с nodejs.Это новая технология для меня.Я пишу с Java уже много лет, но думаю, что пришло время изучать новые технические вещи.ХОРОШО.Здесь мой вопрос.У меня есть классы, которые подключаются к БД и отправляют SQL-операторы.Это нормально работает.Но когда я использую эти функции в другом классе, у меня возникает проблема, что поток не останавливает его, пока я не получу результат из БД.Вот фрагмент кода.async и await - мое отчаянное испытание, чтобы решить мою проблему.И, конечно, этот код не является безопасным, а только POC.Я абсолютно не знаю, как я могу решить эту проблему, или какова лучшая практика.Может быть, мое состояние Java является проблемой.Я не знаю.Когда кто-то может мне помочь или дать подсказку, большое спасибо, на продвинутом уровне.

Класс DBMaintenance

var Pool = require('pg').Pool;

var pool = new Pool({
    user: 'xxxxxxx',
    host: 'localhost',
    database: 'MailService',
    password: 'xxxxxx',
    port: 4711
});

var isConnect = false;
var result = 'nothing';
module.exports = class DBMaintenance {
    constructor() {
        console.log('Init');
    }
    get  Pool() {
        return this.pool;
    }

    async connect(sqlStatement) {
        await pool.connect(async function (err) {
            if (err)
                throw err;
            isConnect = true;
            if (sqlStatement) {
                await  pool.query(sqlStatement, (err, res) => {
                    result = err ? err.stack : res;
                    //console.log('1.......' + result.rows[0].all);
                    //pool.end();
                    return result;
                });
            }
        });

       // console.log('2........' + result);
        //    return result;
    }

    isDBConnect() {
        console.log(isConnect);
        return isConnect;
    }
};

    Index.js

    router.post('/', async function (req, res) {  
       await checkPWAndUser(req.body.inputPassword,req.body.inputEmail);
        res.send('Post page');
    });

    async function checkPWAndUser(pw, username) {
        PGDBMaintenance.isDBConnect();

          //  console.log('Result :' + result);
            await PGDBMaintenance.connect('select count(*) as all from mailusers;').then(results => {
                // process results here
                console.log('.......> '+results);
            }).catch(err => {
                // process error here
                console.log(err);
            });
        if (pw && username) {
            console.log(`chekcPW : ${pw} > ${username}`);
        }
    }

И это Результат, если я нажална кнопке входа в систему.

  1. .......> undefined (Эти выходные данные взяты из метода из класса index.js)
  2. chekcPW: ertertert> bernd@bernd.dewe (также этивыходные данные)
  3. 1 ....... 24164 (эти выходные данные из БД. Они вызываются из класса DBMaintenance)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...