Я создаю Express
API, созданный с помощью пакета mssql
.
Если я не позвоню sql.close()
, я получу следующую ошибку:
Ошибка: глобальное соединение уже существует. Сначала вызовите sql.close ().
Я бы хотел, чтобы конечные точки были простыми для отслеживания и поддержки, и как следующий шаблон, используя шаблон обещания finally
.
const sql = require("mssql")
const config = require("../config")
sql.connect(config.properties).then(pool => {
return pool.request()
.execute('chain')
.then(response => {
res.send(response['recordsets'][0][0]['response'])
})
.catch(err => res.send(err))
.finally(sql.close())
})
Однако это приводит к следующей ошибке:
{
"код": "ENOTOPEN",
"name": "ConnectionError"
}
Следующий код работает, но кажется немного неуклюжим определять несколько раз sql.close
в одной и той же функции.
sql.connect(config.properties).then(pool => {
return pool.request()
.execute('chain')
.then(response => {
res.send(response['recordsets'][0][0]['response'])
sql.close()
})
.catch(err => {
res.send(err)
sql.close()
})
})
Можно ли позвонить sql.close
как часть цепочки обещаний после отправки ответа или ошибки с res.send
?