Skip to content

nukedzn/node-informix

Repository files navigation

node-informix

Join the chat at https://gitter.im/nukedzn/node-informix

npm version wercker status codecov.io Coverage Status Dependency Status devDependency Status

A node.js native client for IBM Informix.

Features

  • Developer friendly ES6 Promise based API
  • Transparent connections with lazy connect
  • Connection pooling
  • Prepared Statements
  • Transaction contexts
  • Linux, Mac OSX and Windows (experimental) compatibility

Dependencies

Environment variables

  • INFORMIXDIR - (e.g. INFORMIXDIR=/opt/informix)
  • INFORMIXSERVER - (e.g. INFORMIXSERVER=ol_informix1210)
  • INFORMIXSQLHOSTS
  • PATH to include ${INFORMIXDIR}/bin - (e.g. export PATH="${INFORMIXDIR}/bin:${PATH}")
  • LD_LIBRARY_PATH to include ESQL/C shared libraries - (e.g. export LD_LIBRARY_PATH="${INFORMIXDIR}/lib:${INFORMIXDIR}/lib/esql:${LD_LIBRARY_PATH}")

Debian/Ubuntu

You'll need to patch ${INFORMIXDIR}/bin/esql on Debian based systems. e.g.

$ cat esql-4.10.debian.patch | patch ${INFORMIXDIR}/bin/esql

Installation

$ npm install --save informix

Usage

var opts = {
  database : 'test@ol_informix1210',
  username : 'rockstar',
  password : 'secret'
};

var informix = require( 'informix' )( opts );
var Informix = require( 'informix' ).Informix;
var informix = new Informix( { database : 'test@ol_informix1210' } );
informix
  .query( "select tabname from systables where tabname like 'sys%auth';" )
  .then( function ( cursor ) {
    return cursor.fetchAll( { close : true } );
  } )
  .then( function ( results ) {
    console.log( 'results:', results );
  } )
  .catch( function ( err ) {
    console.log( err );
  } );
var ctx = informix.createContext();

ctx.begin()
  .then( function () {
    return ctx.query( "insert into tcustomers( fname, lname ) values( 'John', 'Smith' );" );
  } )
  .then( function ( cursor ) {
    console.log( 'id:', cursor.serial() );
    return cursor.close();
  } )
  .then( function () {
    return ctx.commit();
  } )
  .then( function () {
    return ctx.end();
  } )
  .catch( function ( err ) {
    console.log( err );
  } );

API Documentation

JSDoc generated API documentation can be found at http://nukedzn.github.io/node-informix/docs/.

Contributing

Contributions are welcome through GitHub pull requests (using fork & pull model).