在我的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);
});
});