如何使用Tedious驱动程序和Node

时间:2019-05-31 00:45:10

标签: node.js sql-server typescript tedious

问题:

我一直在SQL查询中遇到错别字问题,而乏味的驱动程序并没有太大帮助。当有错误时,它可以很好地告诉我错误的类型和出了什么问题,但是堆栈跟踪永远不会包含我的任何项目文件。这使调试变得困难,尤其是当我在同一函数中进行多个查询时。我目前正在使用mssql库,但直接使用乏味的代码时遇到了同样的问题。另外,错误的堆栈中根本没有提到mssql,所以我认为这不是问题。

我尝试过的事情:

  • tedious GitHub page上寻找问题
  • 添加了一个conn.on('error')侦听器,该侦听器似乎没有任何作用。
  • 为“ uncaughtException”和“ unhandledRejection”添加了process.on()个监听器。
  • ConnectionPool的初始化移到了自己的函数中,尝试在那里捕获错误。没有运气。

某些代码:

这是我用来运行查询的准系统示例:

async function dbConnect() {
  const conn = await new ConnectionPool(dbConfig).connect();

  conn.on('error', error => {
    console.error('*Connection Error:', error);
  });

  return conn;
}

async function runQuery() {
  const conn = await dbConnect();

  await conn.request().query(`SELECT Thing FROM Place`);
  await conn.close();
}

runQuery()
  .then(results => {
    console.log(results);

    process.exit(0);
  })
  .catch(error => {
    console.error(error);

    process.exit(1);
  });

错误: An error message without the correct stack

希望这是可能的。如果没有,有人会想到其他的SQL Server节点驱动程序吗?

编辑:在request

上添加了一个错误侦听器
async function dbConnect() {
  const conn = await new ConnectionPool(dbConfig).connect();
  const request = new Request(conn);

  conn.on('error', error => {
    console.error('*Connection Error:', error);
  });

  request.on('error', error => {
    console.error('*Request Error:', error);
  });

  return request;
}

async function runQuery() {
  const request = await dbConnect();

  await request.query(`SELECT Thing FROM Place`);
}

0 个答案:

没有答案