1.0.29 • Published 8 months ago

lw-jsd v1.0.29

Weekly downloads
-
License
MIT
Repository
-
Last release
8 months ago

勿喷,懒人制作,文档不清楚勿喷,非大神

该库的作用就是将数据保存在本地的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所存的值

  1. arr模式中json对象里默认只有一个属性,属性名称为json文件的名称,且值为数组
  2. obj模式则里面可以包含多个属性和值,但是尽量存放比较短或者小的数据

3.配置完成后,该函数会返回一个操作函数,该操作函数接收两个值↓

  1. 第一个是mode,值为字符类型,表示操作类型,mode有这些类型的值:
    • 'ins'此为添加操作
    • 'del'此为删除操作
    • 'sel'此为查询操作
    • 'upd'此为更新操作
  2. 第二个参数有很多类型下面有详解

第二部和第三步是需要同时使用且包装在一个函数里的

示例:

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为两种类型数组/对象:

  1. 为数组时,数组里面的所有数据会通过unshit添加到数组头部。
  2. 为对象时具有以下属性:
{
   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:此为更新的数据,值为数组,数组内部包裹的是对象且每个对象都要有比对的唯一键和值
}
1.0.29

8 months ago

1.0.28

8 months ago

1.0.27

8 months ago

1.0.26

8 months ago

1.0.25

8 months ago

1.0.2

8 months ago

1.0.0

8 months ago