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)
})()
版本选择
短短几天时间这个库就有 v0 和 v1 两个版本了,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/(其实就是导航到 v0 和 v1 版本的文档上去)
v0 版本文档网址:https://v0.concisedb.top/
v1 版本文档网址:https://v1.concisedb.top/
这篇博客介绍了作者开发的一个Node.js库——ConciseDb,它允许开发者将数据存储到本地JSON文件中。该库使用了Proxy实现数据的自动更新,并支持TypeScript。ConciseDbSync用于同步操作,而ConciseDb则支持异步操作。此外,通过适配器机制,该库可以拓展到不同的存储方式。博客还提到了v0和v1两个版本的区别,v1引入了适配器概念,增强了可扩展性。

被折叠的 条评论
为什么被折叠?



