electron-egg electron-egg
首页
  • v4.x
  • v3.x
  • v2.x
插件
  • v4.x
  • v3.x
demo
支持
知识点
案例
交流
  • GitHub (opens new window)
  • Gitee (opens new window)
首页
  • v4.x
  • v3.x
  • v2.x
插件
  • v4.x
  • v3.x
demo
支持
知识点
案例
交流
  • GitHub (opens new window)
  • Gitee (opens new window)
❤️成为赞助商
  • 教程

  • ee-bin

  • ee-core

    • addon

      • 插件模块
      • window
    • bin
    • config
    • const
    • const/channel
    • controller
    • core
    • cross
    • ee
    • electron
    • electron/app
    • electron/window
    • exception
    • httpclient
    • jobs
    • jobs/ChildJob
    • jobs/ChildPoolJob
    • loader
    • log
    • message
    • message/childMessage
    • ps
    • services
    • socket
    • storage
    • storage/jsondb
      • storage/sqlite
      • tools
      • this-app

      • utils
      • utils/helper
      • utils/is
      • utils/json
      • utils/time
      • utils/ip
      • utils/get-port
      • oldUtils
    • ee-go

    目录

    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/06/06, 07:21:49
    storage
    storage/sqlite

    ← storage storage/sqlite→

    Theme by Vdoing | Copyright © 2023-2025 哆啦好梦 | 京ICP备15041380号-2
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式
    ×