NodeJS SQL Server语言 - 如何使用将返回一个承诺的数组输入参数进行查询



在我的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。我对承诺的概念很陌生,想知道我的代码可能在哪里失败。

让我们首先添加一个我认为更有用的数组,它将每个"对"的列和表组合在一个对象中

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);
});
});

最新更新