$ npm install @slonik/pg-driverpgimport { createPgDriverFactory, DatabaseError } from "@slonik/pg-driver";
All Slonik errors extend from SlonikError. SlonikError uses cause property to store the original error, which might be a DatabaseError from pg. Example:
pool.on("error", (error) => {
const cause = error.cause;
if (cause instanceof DatabaseError) {
console.log(cause.code);
}
});
This allows you to handle errors based on the lower-level error codes provided by pg driver.
Example of handling all errors that could warrant a fatal error:
const fatalErrorClasses = [
// Connection Exception
"08",
// Invalid Authorization Specification
"28",
];
pool.on("error", (error) => {
if (error.cause instanceof DatabaseError) {
const classCode = error.cause.code.slice(0, 2);
if (fatalErrorClasses.includes(classCode)) {
// Initiate shutdown due to unexpected connection state.
}
}
});