Я пишу простой инструмент CLI nodejs, изучая промисы (чтобы избежать ада обратного вызова), и каждый найденный мной пример учебника/stackoverflow показывает только, как сделать один вызов. Мой вариант использования выглядит следующим образом: 1. Подключиться к базе данных (это я могу сделать) 2. Выполнить оператор выбора SQL (также есть эта часть) 3. Проделать некоторые действия с результатами 4. Повторить шаги 2 и 3 еще несколько раз раз
Я собираю имя пользователя и пароль MSSQL (с жестко закодированным сервером «localhost» и именем базы данных «testdb»), поэтому, когда приложение выполняется, я не могу просто подключиться к соединению MSSQL.
Я могу получить это с помощью обратных вызовов, но сейчас у меня около 50 запросов, так что вы можете себе представить безобразие. Полный код ниже дает мне первый запрос, и я сильно подозреваю, что не передаю объект «пул» следующему «тогда», но когда я пытаюсь
.then((pool,result) => {
//next command
})
Он все еще не распознает пул
Вот код (index.js):
const mssql = require('mssql');
const qry1 = "select fieldA from tblA";
const qry2 = "select fieldB from tblB";
const qry3 = "select fieldC from tblC";
var dbuser = '';
var dbpass = '';
var config = {}
function init() {
log('Beginning Audit');
collectDbInfo(); //The reason I don't just included it all here
}
function collectDbInfo() {
//code is irrelevant to the problem, this is where I'm collecting the database credentials
}
function start() {
config = {
user: dbuser,
password: dbpass,
server: 'localhost',
database: 'testdb'
}
mssql.connect(config)
.then(pool => {
//FIRST query
return pool.request().query(qry1)
})
.then(result => {
processQryA(result);
//SECOND query
return pool.request().query(qry2)
})
.then(result => {
processQryB(result);
//THIRD query
return pool.request().query(qry3)
})
.then(result => {
processQryC(result);
})
mssql.on('error',err => {
log('SQL Error:' err)
mssql.close();
process.exit(0);
}
}
processQryA(data) {
console.log(data.recordset[0].fieldA)
}
processQryB(data) {
console.log(data.rcordset[0].fieldB)
}
processQryC(data) {
console.log(data.recordset[0].fieldC)
}
init();
Я полностью понимаю, что могу подходить ко всему этому неправильно, поэтому любые советы или особенно примеры будут очень признательны.