Я создам веб-приложение с 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}`);
}
}
И это Результат, если я нажална кнопке входа в систему.
- .......> undefined (Эти выходные данные взяты из метода из класса index.js)
- chekcPW: ertertert> bernd@bernd.dewe (также этивыходные данные)
- 1 ....... 24164 (эти выходные данные из БД. Они вызываются из класса DBMaintenance)