NodeJS SQL Server - Как сделать запрос с входными параметрами массива, который вернул бы одно обещание - PullRequest
0 голосов
/ 19 октября 2018

На моем сервере SQL у меня есть два столбца col1 и col2, принадлежащие двум отдельным таблицам table1 и table2 соответственно, т. Е. Col1 доступен в table1, а col2 доступен в table2.

У меня есть массивы, определенные вмой код NodeJS как:

let columnsArray = ['col1', 'col2'];
let tablesArray = ['table1', 'table2'];

Я хочу иметь возможность запрашивать оба столбца, принадлежащих разным таблицам.

}).then(result => {
   // some code

   // HELP Required
   for(i=0; i<2; i++) {
     return pool.request()
     .query("SELECT " + COL[i] + " FROM " + TABLE[i]) // returns a promise
   } 
}).then(result = {
   console.log(result.recordsets)
})

Я использую модуль NPM mssql .Я новичок в концепции обещаний, интересно, где мой код может не работать.

1 Ответ

0 голосов
/ 21 октября 2018

Давайте начнем с добавления, как мне кажется, более полезного массива, объединяющего столбцы и таблицы в один объект для каждой «пары»

let columnsArray = ['col1', 'col2'];
let tablesArray = ['table1', 'table2'];

let tabColArray = tablesArray.map((table, i) => ({table, col: columnsArray[i]}));

Приведенный выше код приводит к массиву, который выглядит следующим образом:если честно, я бы просто создал tabColArray вот так и покончил бы с этим

let tabColArray = [
    {table: 'table1', col: 'col1'},
    {table: 'table2', col: 'col2'}
];

В любом случае - ваш код теперь

}).then(result => {
    // some code

    // HELP Required
    return Promise.all(tabColArray.map(({table, col}) => pool.request().query(`SELECT ${col} FROM ${table}`)));

}).then(results => { // results is an array, one for each query
    results.forEach(result => {
        console.log(result.recordsets);
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...