Я пишу API с использованием node js и express, который возвращает результаты из одной строки запроса sql, содержащей несколько операторов выбора внутри. Как показано в примере ниже, код отлично работает в этом конкретном сценарии. Обратите внимание, что в запросе есть несколько операторов выбора, и есть переменная counter, в которой есть жестко запрограммированный номер, указывающий количество ожидаемых операторов. Проблема в том, что мне нужно заранее знать, сколько вызовов будет присутствовать в строковом запросе. Я хотел бы изменить приведенный ниже код, чтобы автоматически определять количество результирующих наборов и динамически обрабатывать что-то вроде сбора обещаний, все и затем механизм.
Как правильно использовать msnodesqlv8 для выполнения запросов со многими операторами и получения нескольких наборов данных внутри sql .query метода?
var express = require('express');
var app = express();
app.get('/', function (req, res) {
const sql = require("msnodesqlv8");
const connectionString = "server=.;Database=Master;Trusted_Connection=Yes;Driver={SQL Server Native Client 11.0}";
const query = "SELECT name FROM sys.databases where name like 'test%'; \
SELECT name FROM sys.databases where name like 'vnext%'";
let result = [];
let calls = 0;
let counter = 2;
sql.query(connectionString, query, (err, rows) => {
console.log(rows);
result = result.concat(rows);
console.log(++calls);
if(calls === counter)
{
res.send(result);
}
});
});
var server = app.listen(5000, function () {
console.log('Server is running..');
});