Size: a a a

Node.js — русскоговорящее сообщество

2020 May 02

IK

Iliya Kobaliya in Node.js — русскоговорящее сообщество
До этого ,я например изменил пароль в connect строке, ошибка вылетала только во время запроса,а теперь при коннекте вылетает
источник

PS

Pavel Shakhov (pongo... in Node.js — русскоговорящее сообщество
Iliya Kobaliya
До этого я вообще без коннекта работал)И все хорошо было,не я не знаю,как мне отделить ошибку коннекта от ошибок запросов
если верить доке, то pool.connect используется НЕ для подключения пула к базе. а для получения соединения из пула, и далее ты работаешь с этим соединением, а потом должен его завершить.

при этом каждый pool.query сам делает внутри себя pool.connect
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Iliya Kobaliya
Та мне он нужен только для того,что бы обрабатывать ошибки connect)
Судя по документации pool.connect достаёт из pool подключение. Получается что ты просто достаёшь его при запуске приложения. Просто будет одно висячее подключение, которое нигде не используется
источник

PS

Pavel Shakhov (pongo... in Node.js — русскоговорящее сообщество
John Doe
Судя по документации pool.connect достаёт из pool подключение. Получается что ты просто достаёшь его при запуске приложения. Просто будет одно висячее подключение, которое нигде не используется
+
источник

IK

Iliya Kobaliya in Node.js — русскоговорящее сообщество
Окей,как тогда  разделить ошибки запросов и подключения) Я не нашел
источник

PS

Pavel Shakhov (pongo... in Node.js — русскоговорящее сообщество
Iliya Kobaliya
Окей,как тогда  разделить ошибки запросов и подключения) Я не нашел
ты можешь на старте приложения вызвать pool.connect, проверив что все ок, но потом тебе нужен будет сделать client.release().

в общем, что-то типа:

pool.connect((err, client, release) => {
 if (err) {
   return console.error('Error acquiring client', err.stack);
 }
 release();
})
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Iliya Kobaliya
С транзакциями я еще не ознакомился,слышал ,что они блокирую на время поток,и по завершению чего-то ,продолжают?
Блокируют они или нет зависит от уровня изоляции. А вообще главная идея транзакции - либо всё выполнить успешно, либо в случае ошибки на одном из sql запросе отменить все изменения
источник

IK

Iliya Kobaliya in Node.js — русскоговорящее сообщество
Pavel Shakhov (pongo)
ты можешь на старте приложения вызвать pool.connect, проверив что все ок, но потом тебе нужен будет сделать client.release().

в общем, что-то типа:

pool.connect((err, client, release) => {
 if (err) {
   return console.error('Error acquiring client', err.stack);
 }
 release();
})
То есть подключение проверится 1 раз?При старте
источник

PS

Pavel Shakhov (pongo... in Node.js — русскоговорящее сообщество
Iliya Kobaliya
То есть подключение проверится 1 раз?При старте
да.
источник

IK

Iliya Kobaliya in Node.js — русскоговорящее сообщество
А в случае ,если в дальнейшем отлетит БД,то ошибка вылетит во время запроса?
источник

PS

Pavel Shakhov (pongo... in Node.js — русскоговорящее сообщество
Iliya Kobaliya
А в случае ,если в дальнейшем отлетит БД,то ошибка вылетит во время запроса?
да
источник

IK

Iliya Kobaliya in Node.js — русскоговорящее сообщество
Это норм practice ?
источник

PS

Pavel Shakhov (pongo... in Node.js — русскоговорящее сообщество
Iliya Kobaliya
Это норм practice ?
вообще, у пула есть события. в том числе pool.on('error'

https://node-postgres.com/api/pool#events
источник

IK

Iliya Kobaliya in Node.js — русскоговорящее сообщество
Ну событие коннект,точно такое,как если бы я написал pool.connect,правильно?
источник

IK

Iliya Kobaliya in Node.js — русскоговорящее сообщество
А событие error  не несет пользы,ведь я обрабатываю запросы через try/catch.Все ошибки я обработаю в catch
источник

PS

Pavel Shakhov (pongo... in Node.js — русскоговорящее сообщество
Iliya Kobaliya
А событие error  не несет пользы,ведь я обрабатываю запросы через try/catch.Все ошибки я обработаю в catch
ошибка может произойти вне рамок запроса. без pool.on('error' ты о ней не узнаешь
источник

PS

Pavel Shakhov (pongo... in Node.js — русскоговорящее сообщество
Iliya Kobaliya
Ну событие коннект,точно такое,как если бы я написал pool.connect,правильно?
как я понимаю, это разные вещи
источник

IK

Iliya Kobaliya in Node.js — русскоговорящее сообщество
С событием error можно запросы не оборачивать в try/catch?
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Iliya Kobaliya
С событием error можно запросы не оборачивать в try/catch?
нельзя
источник

IK

Iliya Kobaliya in Node.js — русскоговорящее сообщество
Если я оставлю и try/catch и событие pool.on(error),то у меня 2 раза обработается ошибка?
источник