1.0.0 • Published 9 years ago
index-feed v1.0.0
index-feed
setup a changes feed and indexer for leveldb
This module provides a wrapper around setting up:
example
var ixfeed = require('index-feed');
var through = require('through2');
var level = require('level');
var ddb = level(__dirname + '/data.db');
var idb = level(__dirname + '/index.db');
var ixf = ixfeed({ data: ddb, index: idb, valueEncoding: 'json' });
ixf.index.add(function (row, cb) {
if (/^hacker!/.test(row.key)) {
cb(null, {
'hacker.name': row.value.name,
'hacker.space': row.value.hackerspace
});
}
else cb()
});
/*
ixf.feed.createReadStream({ live: true })
.on('data', function (ch) { console.log('feed:', ch) })
;
*/
ixf.db.batch([
{
type: 'put',
key: 'hacker!1',
value: { name: 'substack', hackerspace: 'sudoroom' }
},
{
type: 'put',
key: 'hacker!2',
value: { name: 'mk30', hackerspace: 'sudoroom' }
},
{
type: 'put',
key: 'hacker!3',
value: { name: 'mitch', hackerspace: 'noisebridge' }
}
], ready);
function ready () {
// list all hackers at sudoroom:
var sudoroom = ixf.index.createReadStream('hacker.space', {
lte: 'sudoroom', gte: 'sudoroom'
});
sudoroom.pipe(through.obj(function (row, enc, next) {
console.log(row.value.name);
next();
}));
}
methods
var ixfeed = require('index-feed')
var ixf = ixfeed(opts)
Create a new ixf
object from required options:
opts.data
- levelup instance to use for storing dataopts.index
- levelup instance to use for storing indexes
and optional options:
opts.keyEncoding
- keyEncoding to use for log dataopts.valueEncoding
- valueEncoding to use for log data
properties
- ixf.db - levelup database handle that appends to changesdown
- ixf.index - changes-index instance
- ixf.feed - changes-feed instance
license
MIT
1.0.0
9 years ago