diff --git a/docs/pages/index.mdx b/docs/pages/index.mdx index a6ba3ef48..77a410626 100644 --- a/docs/pages/index.mdx +++ b/docs/pages/index.mdx @@ -44,8 +44,7 @@ The simplest possible way to connect, query, and disconnect is with async/await: ```js import { Client } from 'pg' -const client = new Client() -await client.connect() +const client = await new Client().connect(); const res = await client.query('SELECT $1::text as message', ['Hello world!']) console.log(res.rows[0].message) // Hello world! @@ -83,5 +82,3 @@ console.log(res.rows[0].message) // Hello world! ``` Our real-world apps are almost always more complicated than that, and I urge you to read on! - - diff --git a/packages/pg/lib/client.js b/packages/pg/lib/client.js index 304d784e9..df430f881 100644 --- a/packages/pg/lib/client.js +++ b/packages/pg/lib/client.js @@ -213,7 +213,7 @@ class Client extends EventEmitter { if (error) { reject(error) } else { - resolve() + resolve(this) } }) }) diff --git a/packages/pg/lib/native/client.js b/packages/pg/lib/native/client.js index f8c8ad9d4..de16693dd 100644 --- a/packages/pg/lib/native/client.js +++ b/packages/pg/lib/native/client.js @@ -135,7 +135,7 @@ Client.prototype.connect = function (callback) { if (error) { reject(error) } else { - resolve() + resolve(this) } }) }) diff --git a/packages/pg/test/integration/client/promise-api-tests.js b/packages/pg/test/integration/client/promise-api-tests.js index a536ce44a..9e2ffec0c 100644 --- a/packages/pg/test/integration/client/promise-api-tests.js +++ b/packages/pg/test/integration/client/promise-api-tests.js @@ -20,6 +20,14 @@ suite.test('valid connection completes promise', () => { }) }) +suite.test('valid connection returns the client in a promise', () => { + const client = new pg.Client() + return client.connect().then((clientInside) => { + assert.equal(client, clientInside) + return client.end().then(() => {}) + }) +}) + suite.test('invalid connection rejects promise', (done) => { const client = new pg.Client({ host: 'alksdjflaskdfj', port: 1234 }) return client.connect().catch((e) => {