Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
28 lines (19 sloc) 1.75 KB
title slug metaTitle
Native Bindings
/features/native
bar

Native bindings between node.js & libpq are provided by the node-pg-native package. node-postgres can consume this package & use the native bindings to access the PostgreSQL server while giving you the same interface that is used with the JavaScript version of the library.

To use the native bindings first you'll need to install them:

$ npm install pg pg-native

Once pg-native is installed instead of requiring a Client or Pool constructor from pg you do the following:

const { Client, Pool } = require('pg').native

When you access the .native property on require('pg') it will automatically require the pg-native package and wrap it in the same API.

Care has been taken to normalize between the two, but there might still be edge cases where things behave subtly differently due to the nature of using libpq over handling the binary protocol directly in JavaScript, so it's recommended you chose to either use the JavaScript driver or the native bindings both in development and production. For what its worth: I use the pure JavaScript driver because the JavaScript driver is more portable (doesn't need a compiler), and the pure JavaScript driver is plenty fast.

Some of the modules using advanced features of PostgreSQL such as pg-query-stream, pg-cursor,and pg-copy-streams need to operate directly on the binary stream and therefore are incompatible with the native bindings.

You can’t perform that action at this time.