Niodb - 简单的高性能本地 JSON 数据库
Niodb 是一个超级简单的高性能本地 JSON 数据库。
Github 仓库:https://github.com/billdong9/niodb
安装
$ npm i niodb --save
例子
以下代码在一个空的 example_data.json
文件中创建了 Nio 数据库,并添加了一些键值对到数据库中。
import { Nio } from 'niodb' // 或 const { Nio } = require('niodb') const db = await new Nio('example_data.json') db.name = 'NioDB' db.message = 'Hello NioDB!' db.users = { count: 100 } db.users.count++
example_data.json
文件在代码运行之后将会变成:
{ "name": "NioDB", "message": "Hello NioDB!", "users": { "count": 101 } }
开始
设置 / 获取值
在数据库中设置值的方式和给 JavaScript 的对象设置值的方式一样:
import { Nio } from 'niodb' const db = await new Nio() db.key = 'value'
如果 filepath
是一个字符串,数据库中的数据将异步且原子地存储到指定的文件中。
获取一个键的值也非常简单:
console.log(db.key)
🌟 只需将 Nio 对象视作一个普通的 JavaScript 对象。
封装函数
或者,你可以使用封装函数 $set
和 $get
来做同样的事。
db.$set(key, value) db.$get(key)
删除 / 检查一个键是否存在
就像在 JavaScript 对象中使用 delete 删除键和使用 in 关键字检查键是否存在一样:
delete db.key console.log(key in db)
封装函数
db.$delete(key) db.$exists(key)
API
Nio
new Nio(filepath, config)
:
每个 Nio 对象都是一个绑定到一个 json 文件的数据库:
const database = await new Nio(filepath, config);
Filepath - json 文件路径
如果 filepath
是一个字符串,new Nio(filepath)
返回一个 Promise 对象,这个对象将会返回一个 Nio 实例,所以你需要使用 await
关键字来获取这个 Nio 对象。
如果 filepath
是 undefined,它将会直接返回一个 Nio 对象,所以不需要使用 await
关键字。然而,为了保证代码的一致性,你总是应该在实例化 Nio 数据库时使用 await
,无论是否定义了 filepath。
Config - 配置对象
config
是可选的,它应该是一个 JavaScript 对象。
所有的配置如下:
await new Nio(filepath, { // 本地的 json 文件被更新时调用 transactionUpdated: () => {} })
封装函数
以下是所有的封装函数:
$set(key, value)
: 设置一个键的值。将值设置为undefined
将会导致TypeError
。$get(key)
: 获取一个键的值。$delete(key)
: 删除键。$exists(key)
: 如果键存在,返回 true。$randomKey()
: 返回一个随机的键。$rename(key, newKey)
: 将键设置为一个新名称,如果新名称已被占用则替换。$type(key)
: 返回键中存储的值的数据类型。所有可能的返回值:array
,object
,null
,number
,string
,boolean
, 和undefined
。
链式调用
你可以链式调用封装函数:
const db = await new Nio() db.content = { content1: 'hello', content2: 'this is NioDB', content3: 'you will like it' } db.content.$delete('content1').$rename('content2', 'introduction').$set('content3', true) console.log(db)
{ content: { content3: true, introduction: 'this is NioDB' } }
错误处理
import { DatabaseError } from 'niodb'

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
WuKongIM(🐒)多场景通用即时通讯 v1.2.2 发布
9年积累,沉淀出来的高性能通用通讯服务,支持即时通讯,站内/系统消息,消息中台,物联网通讯,音视频信令,直播弹幕,客服系统,AI通讯,即时社区等场景 特点 📚 完全自研:自研消息数据库,消息分区永久存储,自研二进制协议(支持自定义),重写Go底层网络库,无缝支持TCP和websocket。 🚀 性能强劲:单机支持百万用户同时在线,单机16w/秒消息(包括DB操作)吞吐量,一个频道支持万人同时订阅。 🔔 零依赖:没有依赖任何第三方组件,部署简单,一条命令即可启动 🔐 安全:消息通道和消息内容全程加密,防中间人攻击和窜改消息内容。 🧱 扩展性强:采用频道设计理念,目前支持群组频道,点对点频道,后续可以根据自己业务自定义频道可实现机器人频道,客服频道等等。 v1.2.2 更新日志: chore: upgrade slsa-verifier to 2.5.1 (升级CI工具 slsa-verifier) chore: upgrade slsa-github-generator (升级CI工具 slsa-github-generator) fix: solve the problem...
- 下一篇
Rust 1.77.0 发布
Rust 1.77.0 稳定版已正式发布,主要带来以下变化: C-string literals Rust 现在支持 C-string literals(c"abc"),它在&'static CStr类型的内存中扩展为以 nul 字节结束的字符串。这使得编写与需要以 nul 结尾的字符串的外语接口互操作的代码变得更加容易,并且在编译时执行所有相关的错误检查(例如,缺少内部 nul 字节)。 Support for recursion in async fn 由于编译器限制,异步函数以前无法调用自身。在 1.77 中,该限制已被取消;因此只要使用某种间接形式来避免函数状态的无限大,就允许递归调用。 这意味着这样的代码现在可以工作: async fn fib(n: u32) -> u32 { match n { 0 | 1 => 1, _ => Box::pin(fib(n-1)).await + Box::pin(fib(n-2)).await } } offset_of! 1.77.0 稳定了struct fields 的offse...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能