Я экспортирую пул соединений, используя 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 показал всю информацию об ошибке.