Node.js 本地数据库的库 —— concisedb

Node.js 本地数据库的库

最近闲着没事干,开发了一个 Node.js 数据库的库。可以做到直接存储数据到本地 JSON 文件中。用起来大概是这个样子的:

用法简介

const ConciseDbSync = require('concisedb').ConciseDbSync
const JSONAdapterSync = require('concisedb').JSONAdapterSync
const path = require('path')

const adapter = new JSONAdapterSync({
  filePath: path.join(__dirname, 'db.json')
})

// 适配器 (adapter), 默认数据 (可选), 是否需要实时更新 (默认: true)
const db = new ConciseDbSync(adapter, { test: [] })

db.data.test.push(1)

console.log(db.data) // 输出: { test: [ 1 ] }

// 尝试更改 JSON 文件的内容
setTimeout(() => {
  db.read()
  console.log(db.data) // 输出:取决于你的更改
}, 10000)

支持使用 TypeScript

import { ConciseDbSync, JSONAdapterSync } from 'concisedb'
import { join } from 'path'

interface Database {
  test: number[];
  username: string;
}

const init: Database = {
  test: [],
  username: 'John',
}

const adapter = new JSONAdapterSync({
  filePath: join(__dirname, 'db.json')
})

// 适配器 (adapter), 默认数据 (可选), 是否需要实时更新 (默认: true)
const db = new ConciseDbSync(adapter, { test: [] })

db.data.test.push(1)

console.log(db.data) // 输出: { test: [ 1 ] }

// 尝试更改 JSON 文件的内容
setTimeout(() => {
  db.read()
  console.log(db.data) // 输出:取决于你的更改
}, 10000)

它使用了 Proxy 以实现自动更新数据到文件,并且支持异步(当然你可以不让它自动更新,具体方法请看 README.md):

db.getData() 仍然是一个同步方法

const ConciseDb = require('concisedb').ConciseDb
const JSONAdapter = require('concisedb').JSONAdapter
const path = require('path')

(async () => {
  const adapter = new JSONAdapter({
    filePath: path.join(__dirname, 'db.json')
  })
  const db = new ConciseDb()
  // 方法 db.init 应该在初始化类后被调用
  // 并且需要用 await 等待方法执行完成
  // 当然,可以用 .then 代替 await
  await db.init(adapter, { test: [] })

  db.data.test.push(1)

  // db.getData() 仍然是一个同步方法
  console.log(db.data, db.getData()) // 输出: { test: [ 1 ] } { test: [ 1 ] }

  // 尝试更改 JSON 文件的内容
  setTimeout(async () => {
    await db.read()
    console.log(db.data) // 输出:取决于你的更改
  }, 10000)
})()

同样,支持 TypeScript

import { ConciseDb, JSONAdapter } from 'concisedb'
import { join } from 'path'

(async () => {
  interface Database {
    test: number[];
    username: string;
  }

  const init: Database = {
    test: [],
    username: 'John',
  }

  const adapter = new JSONAdapter({
    filePath: join(__dirname, 'db.json')
  })
  const db = new ConciseDb()
  // 方法 db.init 应该在初始化类后被调用
  // 并且需要用 await 等待方法执行完成
  // 当然,可以用 .then 代替 await
  await db.init<Database>(adapter, init)

  db.data.test.push(1)

  // db.getData() 仍然是一个同步方法
  console.log(db.data, db.getData()) // 输出: { test: [ 1 ] } { test: [ 1 ] }

  // 尝试更改 JSON 文件的内容
  setTimeout(async () => {
    await db.read()
    console.log(db.data) // 输出:取决于你的更改
  }, 10000)
})()

版本选择

短短几天时间这个库就有 v0v1 两个版本了,v1 主要更改是用到了适配器 (adapter),也意味着可以通过拓展适配器来实现存储到不同地方。

当然如果想用 v0,我也会继续更新。v0 写起来看上去是这样的:

const ConciseDb = require('concisedb')
const path = require('path')

const db = new ConciseDb(path.join(__dirname, 'db.json'), { test: [] })

db.data.test.push(1)

console.log(db.data) // 输出: { test: [ 1 ] }

TypeScript 一样支持,但是懒得写案例了。

只不过 v0 就支持直接存储到 JSON 文件,但是更加方便使用。

链接

本项目设立了官网:https://www.concisedb.top/(其实就是导航到 v0v1 版本的文档上去)

v0 版本文档网址:https://v0.concisedb.top/

v1 版本文档网址:https://v1.concisedb.top/

GitHub 仓库 | Gitee 仓库 | NPM

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值