NioDB v0.1.1 发布 - 高性能本地 JSON 数据库


NioDB 是一个超级简单的高性能本地 JSON 数据库。

安装

$ 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'

 

Github 仓库:https://github.com/billdong9/niodb


相關推薦

2024-03-27

Niodb 是一个超级简单的高性能本地 JSON 数据库。 Github 仓库:https://github.com/billdong9/niodb 安装 $ npm i niodb --save 例子 以下代码在一个空的 example_data.json 文件中创建了 Nio 数据库,并添加了一些键值对到数

2023-02-27

Fastcms 是基于 SpringBoot 前后端分离技术,且具有插件化架构的 CMS 系统,系统具有高扩展性,易维护性,可以快速搭建网站,微信小程序,是开发微信营销插件的基石 Fastcms 是真正意义上的插件化开源项目,支付,搜索,订单催

2022-06-09

Core Dotnet core 如果使用 EntityFrameworkCore 或者 Dapper 来访问数据库,目前还不支持使用 Prepared Statement,下面这两个 issue 有相关说明: https://github.com/dotnet/efcore/issues/5459 https://github.com/DapperLib/Dapper/issues/474 在 v0.1.0 版本,我们只

2023-06-05

你是否曾经因为服务器太多记不住,而喜欢的 ssh 终端又没有服务器管理功能而苦恼? tssh v0.1.1 已实现 ssh 客户端常用的基本功能( 除了 ssh 端口转发 ),一般人用到的 ssh 功能都已支持,欢迎各位大佬试用。 两大额外功能

2023-08-24

Fixed 修复特定字符可能会破坏文件路径的问题 Enhancements 为SFTP新增一些集成测试 支持软链接本身的同步 实现通过文件查询接口获取链接信息 新增go1.21支持 移除go1.19支持 新增symlink动作 为FileInfo结构新增LinkTo字

2023-02-15

DuckDB 是一个高性能的分析数据库系统,它快速、可靠、易于使用。DuckDB 提供了丰富的 SQL 方言,支持远远超过基本 SQL,且支持任意的和嵌套的相关子查询、复杂类型等。 DuckDB 0.7.0 新版本包含对 JSON 支持的许多改进、新

2023-12-07

取配置:network 在线模式,通过百度日历接口获取; local 本地模式,通过本地JSON文件获取 type: network ## 在线模式配置下,通过设置 years 来进行初始化缓存的日历数据 years: - 2020 - 2021 ## 节假日数据源地址,优先获取系统路径,不

2023-09-26

DBeaver 是一个免费开源的通用数据库工具,适用于开发人员和数据库管理员。DBeaver 23.2.1 现已发布,更新内容如下: SQL Editor: 改进了带有连接的表的别名建议 SQL 控制台现在可以保存为脚本 增强型智能补全已启用(可

2022-09-10

该组件通过使用本机浏览器延迟加载来简化图像样式并提高性能。新的 Image 组件现在很稳定,不再需要实验性标志。 SWC Minifier:作为 Next.js 编译器实验性功能的一部分,Next.js 在 12.0 版本中引入了 SWC 进行代码压缩。早期的结

2024-02-20

升级内容 新增 keyPrefixWithDsName 参数,给缓存 Key 增加数据源名称前缀,默认 false 新增 Global.getClearCacheTime() 方法,业务自己管理是否需要更新缓存 新增 DataSourceHolder.DYNAMIC 动态数据源常量,含义与 EMPTY 相同 新增 js.aj

2023-10-15

伴们,Apache Doris 2.0.2  版本已于 2023 年 10 月 6 日正式发布,该版本对多个功能进行了更新优化,旨在更好地满足用户的需求。有 92 位贡献者为 Apache Doris 2.0.2 版本提交了功能优化项以及问题修复,进一步提升了系统的稳定性

2022-07-09

IntelliJ IDEA 2022.2 首个公开测试版已发布。 主要变化 增强远程开发体验 远程开发功能将 IDE 拆分为本地和远程组件,IDE 本身作为后端服务安装在远程服务器上用于加载项目。同时瘦客户端(thin client)在本地运行并提供完

2022-08-15

本语言和一个处理 cmdlets 的框架。 PowerShell v7.3 Preview 7 发布,更新内容如下: 突破性变化 将 System.Security.AccessControl.ObjectSecurity 的类型数据定义移至 Microsoft.PowerShell.Security 模块 引擎更新和修复 在 Windows 上启用搜索 GAC_

2021-11-22

库的速度。 Clickhouse是面向海量数据实时、多维分析、高性能的新一代OLAP数据库管理系统,实现了向量化执行和SIMD指令,对内存中的列式数据,一个batch调用一次SIMD指令,大幅缩短了计算耗时,带来数倍的性能提升。目前已