lw-jsd
v1.0.29
Published
一个控制本地json轻量数据的库
Downloads
3
Readme
勿喷,懒人制作,文档不清楚勿喷,非大神
该库的作用就是将数据保存在本地的json文件里面,对文件进行增删查改等操作,运行在nodejs服务端,测试和开发版本为nodejs18,低版本是否兼容可自行测试
内部文件路径拼接采用resolve方法
1.初始化执行函数时需要传入对象↓
{
mainPath: '此处值为字符类型,是存放数据的最外层文件夹路径',
errorCapture:'此处配置的是出现报错的处理模式,值为字符return / node'
}
- errorCapture参数
- 不写默认采用return模式,写了return也是使用该模式
- 为node模式时没有返回值通过nodejs的err接收报错信息
- mainPath对应的文件夹要提前创建好,否则会报错,此文件夹下面的二级文件夹和二级文件夹下的json文件若不提前创建会自动创建
- 示例:
const jsonDb = require('lw-jsd')
const dbInit = jsonDb({
mainPath: './test',
errorCapture: 'node'
})
2.第一个初始化完成后,返回一个二次初始化函数,需要传入一个对象,处理存放数据的信息的↓
{
secondaryPath: '此处的值为字符类型,存放的是数据存放所在的二级文件夹的名称,是名称不是路径',
libraryType: '此处的值为字符类型,值为'arr' / 'obj'',
fileName: '此处的值为字符类型,存放的是json数据文件的名称'
}
本库对json文件分为arr模式和obj模式也是对应的libraryType所存的值
- arr模式中json对象里默认只有一个属性,属性名称为json文件的名称,且值为数组
- obj模式则里面可以包含多个属性和值,但是尽量存放比较短或者小的数据
3.配置完成后,该函数会返回一个操作函数,该操作函数接收两个值↓
- 第一个是mode,值为字符类型,表示操作类型,mode有这些类型的值:
- 'ins'此为添加操作
- 'del'此为删除操作
- 'sel'此为查询操作
- 'upd'此为更新操作
- 第二个参数有很多类型下面有详解
第二部和第三步是需要同时使用且包装在一个函数里的
示例:
const delayedDb = (mode, option) => {
const operation = dbInit({
secondaryPath: 'allocation',
libraryType: 'obj',
fileName: 'requestControl'
})
return operation(mode, option)
}
第二部和第三步可以多次封装给需要使用的json使用
无论是对文件进行何种操作,最终都会有数据返回,采用obj包裹
{
code: 数字类型,目前有200和400两种
data:此处是处理后的数据
}
返回400则为处理错误,200为处理成功(成功视情况而定需要增加自己的判断)
json文件内部示例
obj模式
{
xxxx: 'xx',
xxx: 888,
xxx: [],
xxxx: {},
xxxx: true
....n....
}
arr模式
{
'此为json文件名称':[]
}
手动创建arr模式json文件时,文件名称要与内部唯一键的名称一致
以下为各操作模式下的第二参数详解
ins模式下第二参数
此时json为obj类型时↓
- 此时option为对象,里面包裹的属性都会被添加进去
此时json为arr类型时↓
此时option为两种类型数组/对象:
- 为数组时,数组里面的所有数据会通过unshit添加到数组头部。
- 为对象时具有以下属性:
{
filter: '该属性值为字符类型,指向了数据在过滤模式下item对象中唯一值的比对属性名称,或者值为'own*'时,比对值就是自身进行过滤',
newData:'此处时需要添加的新数据,值为数组类型'
}
最终过滤完的数据会通过unshit添加到数组头部。
del模式下第二参数
此时json为obj类型时↓
- option为数组,里面存储的为str类型属性名称
此时json为arr类型时↓
此时option为:
- option为数组,里面存储的为str类型或者obj,obj里面存储的是特定项里面的属性与值(对象内的键与值是唯一标识若情况特殊也可以不是)
sel模式下第二参数
此时json为obj类型时↓
- option: 此处为str类型,若有此属性则返回对应的值/没有则全部返回
此时json为arr类型时↓
- option: 没有则全部返回,有就是对象类型
{
handle:'此处值为字符或者数组,处理模式有fil(过滤)/ran(随机)/sort(排序)-为字符时只执行一次,为数组时按顺序执行完成',
filterObj(过滤模式下的条件):{此为数组对象中的某个唯一键与值,可以多个,从上到下依次过滤,第一个条件过滤完成后,在第一次过滤完成的值中继续过滤第二条件以此类推}
randomNum(随机模式下条件): '此处的值为数字类型,代表从数据源里随机吐出的数据个数'
sortType(字符类型的值,排序模式下的类型选项):支持time(时间排序)/num(数字排序,支持字符数字和原始数字),
sortKey:(字符类型的值,排序模式下指引对象中的某个key取值运算),
sortOrder:(字符类型的值,控制排序是大到小还是小到大,不填写默认大到小,小到大填写‘smallTo’)
}
upd模式下第二参数
此时json为obj类型时↓
- 存储对象为obj模式时,option为对象,对象内存储的键和值都会更新到文件里面
此时json为arr类型时↓
- option为对象
{
onlyId: 此为比对的键的名称,为字符类型
upData:此为更新的数据,值为数组,数组内部包裹的是对象且每个对象都要有比对的唯一键和值
}