lowdb一个轻量级本地存储数据库的简单使用教程

安装

npm install lowdb --save

特点

  • 轻量级
  • 不需要服务器
  • 有lodash丰富的API
  • 基于内存和硬盘的存储、
    ###使用
// 引入lowdb
let low = require('lowdb');
// 引入同步写入适配器
let FileSync = require('lowdb/adapters/FileSync')
// 申明一个适配器并定义其名字, 即生成一个xcr.json的json文件,用来存储数据
let adapter = new FileSync('xcr.json');
// 载入适配器, 即使用变量保存,方便使用
let db = low(adapter);
// 定义默认结构,即向json文件写入默认的数据结构
db.defaults({
    post: [],
    user: {},
    count: 0
}).write();
// 使用get方法获取结构内的post属性并追加内容写入文件内
db.get('post').push({ id: 1, title: 'lowdb is awesome' }).write();
// 使用set方法,新建结构内对象的属性并写入文件内
db.set('user.name', 'typecode').write();
// 使用update方法更新属性值
db.update('count', n => n+1).write();

运行js文件后的结果
{
  "post": [
    {
      "id": 1,
      "title": "lowdb is awesome"
    }
  ],
  "user": {
    "name": "typecode"
  },
  "count": 1
}

可以使用lodash强大的功能

lowdb 是基于 lodash 构建的,所以可以使用任何 lodash 强大的函数,比如:_.get() 和 _.find(),并且可以串联地使用:
比如想获取json文件内的id为1的数据

// 比如使用_.get或者_.find
let a = db.get('post').find({ id: 1 }).value();
console.log(a);
// 结果为{ id: 1, title: 'lowdb is awesome' }

API

仅列举部分API,有需要可以去lowdb的github或者npm查看具体使用方法

// 获取文件内的所有数据
db.getState();
// 写入数据
db.write();
// 判断结构内是否有对应的属性,有返回true,没有返回false
db.has('posts').value()
// 获取全部的某一条属性
db.get('post')
  .map('title')
  .value()
// 获取某一个属性内有多少条数据  针对数组
db.get('post')
  .size()
  .value()

// 获取数组内的属性值
db.get('post[0].title')
    .value()

// 修改数组内的属性值,将post内的'lowdb is awesome'修改为'xcr is powerful'
db.get('post')
    .find({ title: 'lowdb is awesome' })
    .assign({ title: 'xcr is powerful' })
    .write()

// 移除某一条属性内所有title为lowdb is awesome的数据 针对数组
db.get('post')
    .remove({ title: 'lowdb is awesome' })
    .write()
// 移除对象内的属性
db.unset('user.name')
  .write()
// 深度克隆数据

db.get('post')
  .cloneDeep()
  .value()

为每一条数据加入不同的id的库lodash-id

  • 加入id保证数据的唯一性
    安装 npm install lodashId
// 使用案例
let low = require('lowdb');
const lodashId = require('lodash-id')
let FileSync = require('lowdb/adapters/FileSync')
let adapter = new FileSync('xcr.json');
let db = low(adapter);
db._.mixin(lodashId)

const collection = db
    .defaults({ post: [] })
    .get('post');

const newPost = collection
    .insert({ title: m() })
    .write()

const post = collection
    .getById(newPost.id)
    .value()


console.log(post);
/*
json 文件保存结果

{
  "post": [
    {
      "title": "xcr is powerful",
      "id": "f28c5245-ae88-45b4-a456-4b46a96d2ac2"
    }
  ]
}

// 多次执行

{
  "post": [
    {
      "title": "xcr is powerful",
      "id": "f28c5245-ae88-45b4-a456-4b46a96d2ac2"
    },
    {
      "title": "xcr is powerful",
      "id": "8000d4af-8c0d-48a7-8856-0cb8b6c69ff7"
    },
    {
      "title": "xcr is powerful",
      "id": "a5b895b1-f796-4aab-a7ee-1ba64ceaa71a"
    }
  ]
}

*/

你可能感兴趣的:(本地好用的存储策略,数据库,json)