-
Notifications
You must be signed in to change notification settings - Fork 0
Client
Your main interface point with the PostgreSQL server, the Client is basically a facade on top of the Connection to provide a much more user friendly, "node style" interface for doing all the lovely things you like with PostgreSQL.
- methods
- events
Creates a new client from a url based connection string postgres://user:password@host:port/database.
Internally the connection string is parsed and a config object is created with the same defaults as outlined below. All parts of the connection string url are optional. This is handy for use in managed hosting like Heroku.
var client = new Client('postgres://brian:mypassword@localhost:5432/dev');
var client = new Client('postgres://brian@localhost/dev'); //will use defaults
var client = new Client(process.env.DATABASE_URL); //something like this should get you running with herokuCreates a new instance of a Client configured via supplied configuration object. In normal instantiation the client will not be connected automatically.
-
object config: can contain any of the following optional properties
-
string user:
- default value:
null - PostgreSQL user
- default value:
-
string database:
- default value:
null - database to use when connecting to PostgreSQL server
- default value:
-
string password:
- default value:
null - user's password for PostgreSQL server
- default value:
-
number port:
- default value:
5432 - port to use when connecting to PostgreSQL server
- will support unix domain sockets in future
- used to initialize underlying net.Stream()
- default value:
-
string host:
- default value:
null - host address of PostgreSQL server
- used to initialize underlying net.Stream()
- default value:
- [Connection] connection:
- default value:
new Connection(config) - the Connection object used by client. Only really provided as a config option to aid in testing. Will be used in the future when connection pooling is implemented
- default value:
-
string user:
var client = new Client({
user: 'brianc',
password: 'boom!'
database: 'test'
host: 'example.com'
port: 5313
});Initializes underlying net.Stream() and startup communication with PostgreSQL server including password negotiation.
### end() : _null_Immediately sends a termination message to the PostgreSQL server and closes the underlying net.Stream().
### query(_string_ text) : _Query_Simply: Creates a query object, queues it for execution, and returns it.
In more detail: Adds a Query to the Client's internal query queue. The query is executed as a simple query within PostgresSQL, takes no parameters, and it is parsed, bound, executed, and all rows are streamed backed to the Client in one step within the PostgreSQL server. For more detailed information you can read the PostgreSQL protocol documentation.
- string text: the query text
var client = new Client({user: 'brianc', database: 'test'});
client.connect();
//query is executed once connection is established and
//PostgreSQL server is ready for a query
var query = client.query("select name from user")
query.on('row', function(row) {
console.log(row.name);
});
query.on('end', client.end.bind(client));Creates a (optionally named) query object, queues it for execution, and returns it.
If either name or values is provided within the config object the query will be executed as a prepared statement. Otherwise, it will behave in the same manner as a simple query.
-
object config: can contain any of the following optional properties
-
string text:
- The text of the query
-
example:
select name from user where email = $1
-
string name:
- The name of the prepared statement
- Can be used to reference the same statement again later and is used internally to cache and skip the preparation step
-
array values:
- The values to supply as parameters
- Values may be any object type supported by the Client
-
string text:
var client = new ...
var query = client.query({
text: 'select name from user where email = $1',
name: 'get user by email',
values: ['brianc@example.com']
});
query.on('row', function() {
//do something w/ yer row data
});
var again = client.query({
name: 'get user by email',
values: ['brianc@example.net']
});
again.on('row', function() {
//do something else
});
again.on('end', client.end.bind(client));Raised when the internal query queue has been emptied and all queued queries have been executed. Useful for disconnecting the client after running an undetermined number of queries.
var client = new Client({user: 'brianc', database: 'postgres'});
client.connect();
var users = client.query("select * from user");
var superdoods = client.query("select * from superman");
client.on('drain', client.end.bind(client));
//carry on doing whatever it was you wanted with the query results once they return
users.on('row', function(row){ ...... });Raised when the client recieves an error message from PostgreSQL or when the underlying stream raises an error. The single parameter passed to the listener will be the error message or error object.
var client = new Client({user: 'not a valid user name', database: 'postgres'});
client.connect();
client.on('error', function(error) {
console.log(error);
});