#node.js
#node.js
Вопрос:
Вот фрагменты index.js и роутер.
index.js
.....
let defaultRoute = require('./routes/default')
app.use('/', defaultRoute)
app.use((err, req, res, next) => {
res.status(500);
res.json(err);
.....
default.js
.....
router.get ('/', function (req, res){
sql.connect(sqlConfig, function(err) {
if(err) console.log(err);
var request = new sql.Request();
var sqlParams = [];
......
Если несколько потоков выполнят вызов, как только я нажму sql.connect во втором фрагменте кода, выдается ошибка, которая перехватывается прослушивателем исключений в index.js . Я вижу ошибку, но ответ никогда не выдает ошибку. Куда это происходит? Есть ли место для node.js ошибки ?
Кстати, ошибка, которую я вижу только в режиме отладки, — «Ошибка: глобальное соединение уже существует. Сначала вызовите sql.close().n в Object.connect’. Я знаю, что мне нужно использовать пул соединений. У меня есть готовый код. Мне просто интересно, что переписывает ответ или что поглощает мою ошибку.
Причина моего любопытства в том, что с таким кодом я все равно не вижу ошибки, выдаваемой в любом случае, я вижу ошибку, когда у меня есть точка останова. Но тот же код в Kubernetes вызывает проблемы с Dynatrace с подробной записью ошибок. Просто пытаюсь понять, прежде чем я исправлю свой код с помощью пула соединений.
Комментарии:
1. Это известно как условие гонки. Ошибка не требует пояснений, закройте соединение, если оно вам не нужно, и снова откройте его при необходимости.
2. Не рекомендуется создавать соединение для каждого запроса, вам следует создавать соединение при запуске приложения, а затем повторно использовать его для каждого запроса.
3. Я ценю ваши ответы. Как я уже сказал, я понял это. Мой вопрос в том, почему с помощью ‘res.json (err)’ клиент не получает его?