storage/jsondb
ee-core:v2.0.3
# 介绍
存储模块-json数据库。
# 使用方法
const Storage = require('ee-core/storage');
# API列表
# connection(database, options = {})
- database [String] - 数据库名
- options [Object] - driver [String] - 数据库类型: jsondb、sqlite - default [Object] - sqlite数据库参数
连接数据库,如果没有则创建。
# json数据库
const jdb = Storage.connection('demo');
# 或
let jsondbOptions = {
driver: 'jsondb'
}
const jdb = Storage.connection('demo', jsondbOptions);
# jdb.setItem()
创建一个存储的 key/value 对
jdb.setItem('test_key', {name:'xiaoming'})
# jdb.getItem()
获取存储的key值
jdb.getItem('test_key')
# jdb.db
实例化后的jsondb对象
# 添加对象和数据
db.defaults({posts: [], user: {}, count: 0})
.write();
db.get('posts')
.push({id: 1, title: 'jsondb is awesome'})
.write()
db.set('user.name', 'typicode')
.write()
db.update('count', n => n + 1)
.write()
运行程序会在项目中添加db.json文件,里面存储了添加的数据:
{
"posts": [
{
"id": 1,
"title": "jsondb is awesome"
}
],
"user": {
"name": "typicode"
},
"count": 1
}
- 可以使用任何lodash强大的函数,比如: _.get() 和 _.find(),并且可以串联地使用:
db.get('users')
.find({sex: 'male'})
.value()
- 查询
可以直接使用lodash的函数进行查询。需要注意的是有些操作可能会导致原数据被修改,为了避免这种误操作,需要使用 .cloneDeep(),操作都是惰性的,只有调用 .value()或 .write()后才会正式执行。 检查users是是否存在
db.has('users')
.value()
- 设置users
db.set('users', [])
.write()
- 排序、选择
db.get('users')
.filter({sex: 'male'})
.sortBy('age')
.take(5)
.value()
- 获取特定字段
db.get('users')
.map('name')
.value()
- 获取数量
db.get('users')
.size()
.value()
- 获取特定信息
db.get('users[0].name')
.value()
- 更新信息
db.get('users')
.find({name: 'Tom'})
.assign({name: 'Tim'})
.write()
- 移除属性
db.unset('users.name)
.write()
- 深拷贝
db.get('users')
.cloneDeep()
.value()
- 使用id索引,可以使用 shortid (opens new window) 为数据库中的每一条记录创建唯一的id索引,然后通过id检索操作记录:
const shortid = require('shortid')
const postId = db
.get('posts')
.push({ id: shortid.generate(), title: 'low!' })
.write()
.id
const post = db
.get('posts')
.find({ id: postId })
.value()
上次更新: 2025/03/27, 02:12:08