配置levelDB的存储位置,并扩展一个分页批量查询的方法,默认将数据存储在用户目录下,用户目录根据nodejsOS模块获取,以保证平台兼容性 var level = require('level');var homedir = require('os')
var level = require('level'); var homedir = require('os').homedir(); var db = level(homedir+'/testDB'); /** * @description 扩展level的查询方法 * @param Boolean opt.keys 是否查询键名 default:true * @param Boolean opt.values 是否查询键值 default:true * @param Boolean opt.revers 是否倒叙查询 default:false * @param Number opt.limit 每次查询的条数 * @param Number opt.pageIndex 当前页数 * @param String opt.prefix 查询关键字 * @param Function opt.callback 回调函数 */ db.__proto__.select = function(opt){ var defOption = { keys: true, values: true, revers: false, limit: 20, pageIndex:0 } var opt = opt || {}; var limit = 0; var pageIndex = opt.pageIndex || defOption.pageIndex-1; if(pageIndex !== 0){ var num = opt.limit || defOption.limit; limit = num + (num*pageIndex); } var option = { keys: opt.keys || defOption.keys, values: opt.values || defOption.values, revers: opt.revers || defOption.revers, limit: limit, } var result = []; if(opt.prefix){ var prefix = opt.prefix; var prefixLen = prefix.length; option.gte = prefix; option.lte = prefix.subString(0,prefixLen-1)+String.fromCharCode(prefix[prefixLen-1].charCodeAt() + 1); } db.createReadStream(option) .on("data",function(data){ result.push(data); }) .on('err',function(err){ }) .on('close',function(){ }) .on('end',function(){ if(opt.callback){ if(pageIndex !== 0){ result = result.splice(num*pageIndex,num); } opt.callback.call(this,result); } }) } module.exports = db;