异步/等待问题。下一行未运行

时间:2018-10-12 18:50:42

标签: node.js async-await

使用一些高度异步的代码,我不确定为什么某些代码没有运行。我并没有真正从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行。

与数据库的连接是牢固的,我可以确认它可以在执行其他操作的代码的其他部分工作,并且我感觉我在某种程度上滥用了异步/等待。

0 个答案:

没有答案