内容简介:lndb是基于本地文件系统封装的一套灵活的持久化存储数据库,支持Node、Electron等。Github:使用文件系统作为基础存储方式,并在上层读写时提供灵活的插件机制,这意味着你可以根据自己的需求定制读写功能,详细信息查看。
lndb是基于本地文件系统封装的一套灵活的持久化存储数据库,支持Node、Electron等。
Github: github.com/yansenlei/l…
使用文件系统作为基础存储方式,并在上层读写时提供灵活的插件机制,这意味着你可以根据自己的需求定制读写功能,详细信息查看。
安装
$ npm install lndb 复制代码
使用
const LNDB = require('lndb')
const db = new LNDB('your/path')
// 初始类型
const pg = db.init('page')
// 写入数据
pg.set('key', {hello: 'lndb!'})
// 读取类型信息
pg.get('key')
// 删除指定key的缓存
pg.remove('key')
// 清空类型下所有缓存
pg.clear()
复制代码
读写信息说明
-
默认情况下不论存入何种数据类型,通过
.get(key)获取到的都是一个文件结构,这是为了可以自由的获取文件信息。 如上面举例那样的Object类型数据默认存入data.json中:__lndb__/page/ └── key └── data.json 复制代码你通过.get(key)获取到的数据像这样:{ "data.json": { "path": "pro/__lndb__/page/key/data.json" }, "data": { "hello": "lndb!" } } 复制代码如果使用内的unzip这样的插件来存入文件,文件树像这样:__lndb__/page/ └── key └── files ├── index.html └── about.html 复制代码你通过.get(key)获取到的数据像这样:{ "files": { "path": "pro/__lndb__/page/key/files/", "child": { "index.html": { "path": "pro/__lndb__/page/key/files/index.html" }, "about.html": { "path": "pro/__lndb__/page/key/files/about.html" } } } } 复制代码 -
如果存入数据是如上面举例那样的
Object类型,在读取时会默认加载数据信息可以通过get(key).data获取,如果需要更灵活的操作数据信息可以使用lodash插件。 -
由于使用的是文件命名,所以命名上对符号(
\/) 是很敏感的,虽然程序会默认使用__lndb__来替换敏感符号后再命名文件,但是希望你在使用的时候注意规避敏感符号以保证程序正常运行。
插件机制
也许默认的读写操作并不能满足你的需求,值得一提的是,Lndb 的核心是可以灵活的扩展读写功能,你可以引入符合标准的插件来替换现有的读写功能:
const demoPlugin = require('demo-plugin')
// add plugin
db.use('demo-plugin', demoPlugin, { "options": true})
const pg = db.init('page')
pg.set('key', { hello: 'lndb!'}, {
name: 'demo-plugin',
options: {}
})
复制代码
-
.use(name, plugin, options)
name plugin options
-
.set/.get(k, v, {name, options})
-
name唯一名称 -
options插件参数,替换db.use()时的预制参数
-
插件规范
现在你可以根据自己的需求编写自己的读取方式,但是你必须遵循必要的规范,插件模板看起来像这样:
module.exports = {
install(Ln, params = {}, options = {}){
// 你的自定义操作
// 调用文件获取
Ln.fls.get(id)
// 调用文件写入
Ln.fls.set(params.id, params.value)
// 获取当前数据保存路径
Ln.fls.datapath
return true
}
}
复制代码
目前插件允许你在 set()
, get()
上做自定义操作。
插件内是一个对象,对象内函数名为 install
,函数带有三个参数:
-
install(Ln, params, options)
-
Ln当前读写上下文 -
params读写时的参数{id, value} -
options传入插件的配置信息
-
内置插件
内置插件默认已经存在于系统插件列表中,可以在 .get()
.set()
直接使用
读取扩展,使用lodash插件灵活读写,该插件参考了 lowdb
的使用方式,这可以很灵活的处理单个文件,具体参考lodash文档
const pg = db.init('page')
const _ = pg.get('key', ['lodash'])
_.setState({hello: 'lndb!'}).write()
_.getState() // { hello: 'lndb!'}
_.has("hello").value() // true
_.update("hello", n => n.toUpperCase()).write() // update -> { hello: 'LNDB!!'}
复制代码
lodash plugin API
-
_.setState()
- 写入数据到实例中
-
_.getState()
- 获取当前实例的数据
-
_.update()
- 更新数据
-
_.read()
- 读取磁盘中的数据到实例,返回实例
-
_.write()
-
所有写入操作需要调用
.write()后才写入磁盘
-
所有写入操作需要调用
写入扩展,使用unzip写入zip文件时解压到指定目录下,意味着可以通过 .get()
方法获取到解压后的路径,便可使用里面的文件
pg.set('key', value, {
name: 'unzip'
})
pg.get('key')
复制代码
-
value<Buffer> | <Base64>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 用于语音识别的数据增强
- 数据结构 – 用于构建文件系统的数据结构?
- 三大用于数据科学的顶级Python库
- CyberScan:用于数据包取证的渗透工具
- RethinkDB:用于实时应用的NoSQL数据库
- 微软开源用于 Azure 数据压缩的算法、硬件和源码
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
模式识别
(希)Sergios Theodoridis、(希)Konstantinos Koutroumbas / 电子工业出版社 / 2010-2 / 75.00元
本书全面阐述了模式识别的基础理论、最新方法以及各种应用。模式识别是信息科学和人工智能的重要组成部分,主要应用领域有图像分析、光学字符识别、信道均衡、语言识别和音频分类等。本书在完美地结合当前的理论与实践的基础上,讨论了贝叶斯分类、贝叶斯网络、线性和非线性分类器设计、上下文相关分类、特征生成、特征选取技术、学习理论的基本概念以及聚类概念与算法。与前一版相比,增加了大数据集和高维数据相关的最新算法,这......一起来看看 《模式识别》 这本书的介绍吧!