本地存储服务,提供json数据库、sqlite数据库。

引入模块

  1. const Storage = require('ee-core').Storage;

json数据库

连接

  1. const jdb = Storage.JsonDB.connection('demo');
  2. # 或
  3. let lowdbOptions = {
  4. driver: 'lowdb'
  5. }
  6. const jdb = Storage.JsonDB.connection('demo', lowdbOptions);

jdb.setItem()

  • 介绍:创建一个存储的 key/value 对

    1. jdb.setItem('test_key', {name:'xiaoming'})

    jdb.getItem()

  • 获取存储的key值

    1. jdb.getItem('test_key')

    jdb.db

  • 介绍:实例化后的lowdb对象

  • 注:lowdb文档:https://www.npmjs.com/package/lowdb

用法

  1. # 添加对象和数据
  2. db.defaults({posts: [], user: {}, count: 0})
  3. .write();
  4. db.get('posts')
  5. .push({id: 1, title: 'lowdb is awesome'})
  6. .write()
  7. db.set('user.name', 'typicode')
  8. .write()
  9. db.update('count', n => n + 1)
  10. .write()
  11. 运行程序会在项目中添加db.json文件,里面存储了添加的数据:
  12. {
  13. "posts": [
  14. {
  15. "id": 1,
  16. "title": "lowdb is awesome"
  17. }
  18. ],
  19. "user": {
  20. "name": "typicode"
  21. },
  22. "count": 1
  23. }
  • 可以使用任何lodash强大的函数,比如: .get() 和 .find(),并且可以串联地使用:

    1. db.get('users')
    2. .find({sex: 'male'})
    3. .value()
  • 查询

可以直接使用lodash的函数进行查询。需要注意的是有些操作可能会导致原数据被修改,为了避免这种误操作,需要使用 .cloneDeep(),操作都是惰性的,只有调用 .value()或 .write()后才会正式执行。
检查users是是否存在

  1. db.has('users')
  2. .value()
  • 设置users

    1. db.set('users', [])
    2. .write()
  • 排序、选择

    1. db.get('users')
    2. .filter({sex: 'male'})
    3. .sortBy('age')
    4. .take(5)
    5. .value()
  • 获取特定字段

    1. db.get('users')
    2. .map('name')
    3. .value()
  • 获取数量

    1. db.get('users')
    2. .size()
    3. .value()
  • 获取特定信息

    1. db.get('users[0].name')
    2. .value()
  • 更新信息

    1. db.get('users')
    2. .find({name: 'Tom'})
    3. .assign({name: 'Tim'})
    4. .write()
  • 移除属性

    1. db.unset('users.name)
    2. .write()
  • 深拷贝

    1. db.get('users')
    2. .cloneDeep()
    3. .value()
  • 使用id索引

    1. 可以使用 [shortid](https://github.com/dylang/shortid) 为数据库中的每一条记录创建唯一的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()

  1. <a name="dM3Fx"></a>
  2. ### sqlite数据库
  3. <a name="iLfey"></a>
  4. #### 连接

// sqlite数据库 let sqliteOptions = { driver: ‘sqlite’, default: { timeout: 6000, verbose: console.log // 打印sql语法 } } const sdb = Storage.JsonDB.connection(‘sqlite-demo.db’, sqliteOptions);

  1. <a name="snM73"></a>
  2. #### sdb.db

插入数据

const insert = sdb.db.prepare(INSERT INTO ${table} (name, age) VALUES (@name, @age)); insert.run(data); ```