Giter VIP home page Giter VIP logo

node-plv8's Introduction

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: '[email protected]'
  })

  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

node-plv8's People

Contributors

clkao avatar tjwebb avatar audreyt avatar solidsnack avatar poga avatar shirkey avatar

Watchers

Linhe Huo avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.