A node.js native client for IBM Informix.
- Developer friendly ES6 Promise based API
- Transparent connections with lazy connect
- Connection pooling
- Prepared Statements
- Transaction contexts
- Linux, Mac OSX and Windows (experimental) compatibility
- IBM Informix ESQL/C which can be installed using IBM Informix CSDK.
- 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}"
)
You'll need to patch ${INFORMIXDIR}/bin/esql
on Debian based systems.
e.g.
$ cat esql-4.10.debian.patch | patch ${INFORMIXDIR}/bin/esql
$ npm install --save informix
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 );
} );
JSDoc generated API documentation can be found at http://nukedzn.github.io/node-informix/docs/.
Contributions are welcome through GitHub pull requests (using fork & pull model).