2.1.4 • Published 9 years ago

plv8 v2.1.4

Weekly downloads
60
License
MIT
Repository
github
Last release
9 years ago

node-plv8

NPM version Build status Dependency Status Code Climate

require() node modules in PLV8. Optimize your Node.js Backend by offloading work directly onto the database (PostgreSQL). Send/receive events between Node and PLV8.

Install

$ npm install --save plv8

Usage

Node API

install (module, [cwd])

Install a Node module which can be loaded into the plv8 context by using the require() method.

uninstall (module)

Remove a previously installed module.

eval (code)

Evaluate a block of Javascript on the fly.

on (event, handler)

Listen for a Postgres NOTIFY event, and invoke the given handler when the event is emitted.

Postres API

require (module)

Load an installed Node module.

log (level, message)

Send a log message to the Node.js application.

emit (event, payload)

Emit an aribtrary event to the Node.js application via NOTIFY.

Example

// setup plv8 connection
const PLV8 = require('plv8')
const plv8 = new PLV8({
  client: 'pg',
  connection: {
    // knex.js connection object
  }
})

// setup a log listener
plv8.on('log:error', msg => {
  console.error(msg)
})

// setup a listener
plv8.on('user:updated', user => {
  // do some stuff with the "user" object
})

// install the lodash module so that it can be loaded (via require()) later
plv8.install(require.resolve('lodash'))
  .then(() => {

    // eval some code
    return plv8.eval(() => {
      const _ = require('lodash')
      return _.map([ 1, 2, 3 ], e => e + 1)
    })
  })
  .then(result => {
    // result = [ 2, 3, 4 ]
  })
// send some events to the client 
plv8.eval(() => {
  const _ = require('lodash')
  const veryImportantValue = _.map([ 1, 2, 3 ], e => e + 1)

  // maybe I want to send this event to the client, but continue doing more things
  plv8.emit('user:updated', {
    username: 'tjwebb',
    email: 'tjwebb@langa.io'
  })

  try {
    return veryImportantValue + 1
  }
  catch (e) {
    plv8.log('error', e)
    return 0
  }
})

2.

PLV8 Extension

This module requires the plv8 Postgres extension.

$ easy_install pgxnclient
$ pgxnclient install plv8

Forked!

This is a fork of plv8x that has been streamlined down to the essentials, and extended with additional API features. Important differences:

  • 90%+ smaller than plv8x (~20kb vs. 300+ kb)
  • Removed node-pg-native
  • Removed Livescript / Coffeescript Support
  • Removed CLI
  • Removed unused/unneeded dependencies
  • Transpile modules using babel instead of browserify

License

MIT

Maintained By

2.1.4

9 years ago

2.1.0

9 years ago

2.1.1

9 years ago

2.1.2

9 years ago

2.0.7

9 years ago

2.0.5

10 years ago

2.0.4

10 years ago

2.0.3

10 years ago

2.0.2

10 years ago

1.1.0

10 years ago

2.0.0

10 years ago

1.0.6

10 years ago

1.0.5

10 years ago

1.0.4

10 years ago

1.0.1

10 years ago

0.8.0

10 years ago

0.0.1

10 years ago

0.0.0

12 years ago