diff --git a/lib/bcoin/ldb.js b/lib/bcoin/ldb.js index f03c8a42..a9fbb1c3 100644 --- a/lib/bcoin/ldb.js +++ b/lib/bcoin/ldb.js @@ -11,10 +11,26 @@ var db = {}; module.exports = function ldb(name, options) { var levelup = require('levelup'); var file = bcoin.prefix + '/' + name + '-' + network.type + '.db'; + var backend = process.env.BCOIN_DB; bcoin.ensurePrefix(); if (!db[file]) { + if (bcoin.isBrowser) { + backend = 'level-js'; + } else { + if (!backend || backend === 'rocksdb') + backend = 'rocksdown'; + else if (backend === 'leveldb') + backend = 'leveldown'; + else if (backend === 'lmdb') + backend = 'lmdb'; + else if (backend === 'tree') + backend = 'tree'; + else + assert(false, 'Bad DB.'); + } + db[file] = new levelup(file, { keyEncoding: 'ascii', valueEncoding: 'binary', @@ -30,9 +46,7 @@ module.exports = function ldb(name, options) { mapSize: options.mapSize || 150 * (1024 << 20), writeMap: options.writeMap || false, - db: bcoin.isBrowser - ? require('level-js') - : require('level' + 'down') + db: require(backend) }); }