抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

摘要:本文主要学习了什么是LowDB数据库,如何在Node项目中实现对数据的增删改查。

环境

Windows 10 企业版 LTSC 21H2
Node 18.14.0
NPM 9.3.1
NVM 1.1.12
LowDB 1.0.0

1 初识

1.1 简介

LowDB是一个轻量级的本地JSON数据库,专为Node环境设计。它使用简单的JSON文件作为数据存储,提供了一个方便的API来读写数据。

1.2 特点

主要特点:

  • 简单易用:API设计简洁直观,上手容易。
  • 轻量级:整个库非常小巧,不会给项目增加太多负担。
  • 灵活性:支持自定义存储适配器,可以轻松切换存储方式。
  • Lodash支持:内置Lodash,提供强大的数据操作能力。
  • 类型安全:提供TypeScript支持,增强代码的可靠性。

2 安装

使用npm install lowdb@1.0.0命令安装。

因为最新版本需要通过ES模块引入,所以需要安装早起版本以便能通过CommonJS模块引入。

3 使用

初始化数据库:

app.js
1
2
3
4
5
6
7
8
9
10
// 引入模块
const low = require('lowdb');
const path = require('path');
const FileSync = require('lowdb/adapters/FileSync');
// 指定数据文件
const file = path.resolve(__dirname, 'db.json');
// 创建同步适配器
const adapter = new FileSync(file);
// 创建LowDB实例
const db = low(adapter);

在命令行执行node app.js命令会在当前目录生成个db.json文件,存储了默认数据:

db.json
1
2
3
4
5
{
"posts": [],
"user": {},
"count": 0
}

默认数据:

js
1
db.defaults({posts: [], user: {}, count: 0 }).write();

写入数据:

js
1
2
3
4
// 从尾部写入
db.get('posts').push({id: 1, title: '天气不错'}).write();
// 从头部写入
db.get('posts').unshift({id: 2, title: '天气不错'}, {id: 3, title: '天气不好'}).write();

删除数据:

js
1
2
3
4
5
6
// 删除对象属性
db.get('user').unset('name').write();
// 删除列表单条或多条
db.get('posts').remove({id: 1}).write();
// 删除列表所有数据
db.get('posts').remove().write();

更新数据:

js
1
2
3
4
// 设置对象属性
db.get('user').set('sex', '男').set('name', '张三').write();
// 设置列表记录
db.get('posts').find({id: 1}).assign({title: '天气很好'}).write();

查询单条数据:

js
1
2
let result = db.get('posts').find({id: 1}).value();
console.log(result);// { id: 1, title: '天气不错' }

查询多条数据:

js
1
2
3
4
5
6
let result = db.get('posts').filter({title: '天气不错'}).value();
console.log(result);
// [
// { id: 2, title: '天气不错' },
// { id: 1, title: '天气不错' }
// ]

查询所有数据:

js
1
2
3
4
5
6
7
let result = db.get('posts').value();
console.log(result);
// [
// { id: 2, title: '天气不错' },
// { id: 3, title: '天气不好' },
// { id: 1, title: '天气不错' }
// ]

排序:

js
1
2
3
4
5
6
7
let result = db.get('posts').orderBy('id', 'asc').value();
console.log(result);
// [
// { id: 1, title: '天气很好' },
// { id: 2, title: '天气不错' },
// { id: 3, title: '天气不好' }
// ]

查询数据条数:

js
1
2
let count = db.get('posts').size().value();
console.log(count);// 3

评论