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"
    }
  ]
}

*/

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要安装 `axios` 和 `lowdb` 这两个库。`axios` 用于发送请求,`lowdb` 是一个轻量级的本地 JSON 数据库。 可以使用以下命令进行安装: ``` npm install axios lowdb ``` 接下来,你可以创建一个 `db.json` 文件,用于存储数据。以下是一个示例: ```json { "users": [ { "id": 1, "name": "Alice", "email": "alice@example.com" }, { "id": 2, "name": "Bob", "email": "bob@example.com" }, { "id": 3, "name": "Charlie", "email": "charlie@example.com" } ] } ``` 然后,你可以创建一个 `db.js` 文件,并在其中初始化 `lowdb`: ```js const low = require('lowdb'); const FileSync = require('lowdb/adapters/FileSync'); const adapter = new FileSync('db.json'); const db = low(adapter); // 设置默认值 db.defaults({ users: [] }).write(); module.exports = db; ``` 在上面的示例中,我们设置了默认值为一个空数组,并导出了 `db` 对象。 接下来,你可以在你的代码中使用 `axios` 来请求你的本地数据库。以下是一个示例: ```js const axios = require('axios'); const db = require('./db'); axios.get('http://localhost:3000/users') .then(response => { // 将响应中的数据保存到本地数据库 db.set('users', response.data).write(); }) .catch(error => { console.log(error); }); ``` 在上面的示例中,我们使用 `axios` 发送了一个 GET 请求,并将响应中的数据保存到我们的本地数据库中。请注意,我们假设我们的本地服务器运行在 `http://localhost:3000` 上,并且有一个名为 `users` 的路由用于获取用户数据。 现在,你可以使用 `db` 对象来查询和操作你的本地数据库了。例如: ```js const db = require('./db'); const users = db.get('users').value(); console.log(users); ``` 在上面的示例中,我们获取了本地数据库中的所有用户数据,并将它们打印到控制台上。 希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值