npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

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所存的值

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

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

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

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

示例:

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:此为更新的数据,值为数组,数组内部包裹的是对象且每个对象都要有比对的唯一键和值
}