Skip to content

Error object differs between pg and pg-native #938

Closed
@deyhle

Description

@deyhle

node-postgres abstracts over the pg-native module to provide exactly the same interface as the pure JavaScript version. No other code changes are required. If you find yourself having to change code other than the require statement when switching from require('pg') to require('pg').native please report an issue.

The fix for #743 made me test a switch to pg-native again. However, I still found an API difference: the Error object. While the default pg library returns an error with properties code and detail, the parameters are named differently when using pg-native.

require('pg'):

{
  "name": "error",
  "length": 199,
  "severity": "ERROR",
  "code": "23505",
  "detail": "Key (c1)=(one) already exists.",
  "schema": "public",
  "table": "dbhandlertest",
  "constraint": "dbhandlertest_pkey",
  "file": "nbtinsert.c",
  "line": "402",
  "routine": "_bt_check_unique"
}

require('pg').native:

{
  "severity": "ERROR",
  "sqlState": "23505",
  "messagePrimary": "duplicate key value violates unique constraint \"dbhandlertest_pkey\"",
  "messageDetail": "Key (c1)=(one) already exists.",
  "sourceFile": "nbtinsert.c",
  "sourceLine": "402",
  "sourceFunction": "_bt_check_unique"
}

This makes it hard to do proper error handling. Especially the code property is probably used a lot for that.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions