работает с некоторым сильно асинхронным кодом, и я не уверен, почему какой-то код не работает.Я на самом деле не получаю ошибок от отладчика кода 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
.
Соединение с базой данных надежное, и я могу подтвердить, что оно работает в других частях кода, которые выполняют другие функции,и у меня есть ощущение, что я неправильно использую async / await.