使用一些高度异步的代码,我不确定为什么某些代码没有运行。我并没有真正从VS代码调试器中得到关于为什么的错误。
我有一个读取CSV文件然后查询SQL数据库的功能。
const db = require('./db');
const csv = require('csvtojson');
const path = require('path');
const remapGroups = async () => {
try{
let fileName = path.join(__dirname, 'fnvgroups.csv');
let data = await csv().fromFile(fileName);
let idMap = []
let pool = await db.getPoolConnection();
data.forEach( async (x) => {
let id = `FNV-${x.External_ID}`;
let query = `select distinct finalId from ns_union..tblUnion where sourceId='${id}'`;
let result = await db.queryUnion(pool, query);
idMap.push({original: id, final: result});
});
console.dir(idMap);
}catch(err) {
console.error(err);
}
}
来自db.js
文件的相关部分是getPoolConnection
函数:
const mssql = require('mssql');
const getPoolConnection = async ( srvaddress = server) => {
try {
let pool = await mssql.connect({
user: username,
password: password,
server: srvaddress,
options: {
tdsVersion: srvaddress === 'gsoboss' ? '7_1' : '7_4'
}
});
return pool;
} catch (err) {
console.error(err);
}
};
和queryUnion
函数:
const queryUnion = async (pool, query) => {
try{
let result = await pool.request().query(query);
console.log(result);
return result;
}catch(err){
console.error(err);
}
}
我遇到的问题是remapGroups
中的行调用了查询联合。它正在运行查询,但是在queryUnion
内部却从未运行过return result
行。
与数据库的连接是牢固的,我可以确认它可以在执行其他操作的代码的其他部分工作,并且我感觉我在某种程度上滥用了异步/等待。