MS SQL Nodejs пул соединений не содержит номера строки ошибки - PullRequest
0 голосов
/ 04 августа 2020

Я экспортирую пул соединений, используя nodejs-mssql.

    const sql = require('mssql/msnodesqlv8');
    const keys = require('../config/keys');
    // const util = require('util')
    
    //Need this package for windows authentication
    
    
    
    let config;
    console.log(keys)
    if (keys.db.state.toLowerCase() == "dev") {
        config = {
            user: keys.db.dev_user,
            password: keys.db.dev_password,
            server: keys.db.dev_server, // You can use 'localhost\\instance' to connect to named instance
            database: keys.db.dev_database,
            // driver:'msnodesqlv8',
            pool: {
                max: 10,
                min: 5,
                idleTimeoutMillis: 30000
            },
            options: {
                encrypt: false,
                instanceName: keys.db.dev_instanceName,
                enableArithAbort: true
            },
            //  port:57909,
            enableArithAbort: false
        }
    } 
    console.log(config)
    
    let connection = new sql.ConnectionPool(config).connect()
        .then(query => {
            return query
        })
        .catch(e => console.error("Database Trouble!  ", e))
    
    
    // pool.query = util.promisify(pool)
    
    
    module.exports = connection;

Чтобы использовать это соединение, я делаю:

router.post('/search', async function (req, res) {
    try{
         let pool = await connection
         await pool.query(`QUERY WITH SOME ERROR`)
     }

    catch(err){
        console.log(err)
    }

}

Как вы можете видеть из выше, когда я запускаю какой-то запрос, в котором есть ошибка, сообщение об ошибке не содержит никакой информации о том, откуда возник запрос в отношении моего кода:

Trace: RequestError: Incorrect syntax near '2'.
    at handleError (E:\TQA\node_modules\mssql\lib\msnodesqlv8\request.js:258:21)
    at StreamEvents.emit (events.js:315:20)
    at E:\TQA\node_modules\msnodesqlv8\lib\reader.js:37:20
    at Array.forEach (<anonymous>)
    at routeStatementError (E:\TQA\node_modules\msnodesqlv8\lib\reader.js:30:14)
    at E:\TQA\node_modules\msnodesqlv8\lib\reader.js:299:13
    at E:\TQA\node_modules\msnodesqlv8\lib\driver.js:177:13
    at E:\TQA\node_modules\msnodesqlv8\lib\driver.js:157:13 {
  code: 'EREQUEST',
  originalError: [Error: [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near '2'.] {
    sqlstate: '42000',
    code: 102
  },
  number: 102,
  state: '42000'
}

Я знаю, что могу добавить console.trace (error.lineNumber ) везде, где у меня есть console.log (err), но я планирую сохранить err в базе данных и хочу, чтобы err содержал эту информацию.

Недавно я переключился с mysql на ms Пакет sql и mysql показал всю информацию об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...