plv8

2.1.4 • Public • Published

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

Package Sidebar

Install

npm i plv8

Weekly Downloads

2

Version

2.1.4

License

MIT

Last publish

Collaborators

  • langa
  • tjwebb