npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

koa-pg

v1.0.0

Published

Koa middleware to get you a Postgres client.

Downloads

43

Readme

Note: This project is in need of an owner or maintainer since I don't use it. I fear my pulling of PRs isn't making it better since it requires more of an overview by someone. Please get in touch. :) Thanks.

koa-pg

Koa middleware to get you a Postgres client on the way down the middlewares, and release it on the way back up the middlewares.

This extends Koa by adding a this.pg object to it. This contains the this.pg.client and this.pg.done. You should use this.pg.db.client to yield to the .query_() method (from co-pg) but you should not call this.pg.db.done() since that is used internally by koa-pg when going back up the middlewares.

Synopsis

var koa = require('koa')
var koaPg = require('koa-pg')

var app = koa()

app.use(koaPg('postgres://user:password@localhost:5432/database'))

app.use(function *(next) {
    // Here we have access to this.pg.db.client which is client returned from pg.connect().
    var result = yield this.pg.db.client.query_('SELECT now()')
    console.log('result:', result)

    this.body = result.rows[0].now.toISOString()
})

app.listen(3000)

Options

  • 'name' : default -> 'db'

This is the name you want to use for this database. The default is db which means the client is at this.pg.db.client. If you only have one database connection you may want to just leave this as the default. See below if you require two or more database connections (such as master or slave).

app.use(koaPg({
    name   : 'master',
    pg : 'postgres://user:password@localhost:5432/database'
}))

app.use(function *(next) {
    var result = yield this.pg.master.client.query_('SELECT now()')
    this.body = result.rows[0].now.toISOString()
})
  • 'pg'

This is the parameter that is passed via co-pg to node-postgres. It can be either a string or an object and conforms to the API as provided by the aforementioned modules.

var config = {
    name: 'master_db',
    pg: {
        user: 'postgres',
        database: 'db',
        password: 'pass',
        port: 5432,
        max: 10,
        idleTimeoutMillis: 60
    }
}

app.use(koaPg(config))

Multiple Database Connections

When using only one database connection you can use the default db name, but if you need more than one connection you must name at least one or other (or both) to something different. Let's say you have a master and a slave and you require a client at all times (in reality you'd probably just connect to one or the other depending on what operations you are doing).

app.use(koaPg({
    name   : 'master',
    pg : 'postgres://user:password@masterhost:5432/database'
}))

app.use(koaPg({
    name   : 'slave',
    pg : 'postgres://user:password@slavehost:5432/database'
}))

// a write query
app.use(function *(next) {
    var result = yield this.pg.master.client.query_('SELECT now()')
    // ...
})

// a read query
app.use(function *(next) {
    var result = yield this.pg.slave.client.query_('SELECT now()')
    // ...
})

Author

Written by Andrew Chilton - Blog - Twitter.

(Ends)