Skip to content

edvakf/node-tokyocabinet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

Tokyo Cabinet binding for Node.js. So far only implemented interfaces defined in tokyocabinet.idl.

Install

$ node-waf configure build

Warning

THIS SOFTWARE IS STILL AN ALPHA VERSION.

Sync vs. Async

Sync interface (not recommended because we are using Node.js!).

var hdb = new HDB;
// open database
var success = hdb.open('casket.tch', HDB.OWRITER | HDB.OCREAT);
if (!success) throw hdb.errmsg();
// store a value
var success = hdb.put('foo', 'bar');
if (!success) throw hdb.errmsg();
// retrieve a value
var v = hdb.get('foo'); // => 'bar'
if (v === null) throw hdb.errmsg();
sys.puts(v);

Async interface.

var hdb = new HDB;
// 'setmutex' makes database multi-thread safe
hdb.setmutex();
// open database
hdb.openAsync('casket.tch', HDB.OWRITER | HDB.OCREAT, function(err){
  if (err) throw hdb.errmsg(err);
  // store a value
  hdb.putAsync('foo', 'bar', function(err){
    if (err) throw hdb.errmsg(err);
    // retrieve a value
    hdb.get('foo', function(err, val){
      if (err) throw hdb.errmsg(err);
      sys.puts(val);
    });
  });
});
hdb.put('foo', 'bar');
var v = hdb.get('foo'); // => 'bar'

As you can see, it’s very cumbersome to write with Async APIs. I’m planning to write the Async wrapper API to make it easy to use. Or you can wrap with your preferred library (Promise, Deferred, Do, etc.)

ToDo

  • Write async wrapper.

  • More tests.

License

The MIT License Copyright © 2010 Atsushi Takayama <taka.atsushi (a) gmail.com>

About

Tokyo Cabinet binding for Node.js

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published