DiskDB,一个不用网的数据库
时间:2022-07-25
本文章向大家介绍DiskDB,一个不用网的数据库,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
作为程序员,偶尔会冒出些新奇的想法,又不希望实现起来太麻烦,比如说做一个单机版的客户管理系统。
这时候我们可能会希望有个这样的存储工具:
- 不需要网络
- 接口成熟
- 可嵌入式
如果我们需要的是关系型数据库,可以选择 SQLite,如果希望用菲关系型数据库,我推荐尝试 DiskDB。
DiskDB 简介
DiskDB 是一个轻量级的 JSON 文件数据库,它的 API 模仿了 MongoDB,非常适合于 Node 环境开发。
Github: https://github.com/arvindr21/diskDB
使用手册:https://github.com/arvindr21/diskDB/README.md
应用实例:https://github.com/arvindr21/diskDB/tree/master/examples
DiskDB 用法介绍
DiskDB 的安装
$ npm install diskdb
var db = require('diskdb');
db = db.connect('数据库存储目录', ['访问的数据集合']);
// 之后像 Mongodb 一样操作它
注:每一个数据集合是一个独立的 JSON 文件。
数据集合的加载
除了在连接时加载,还可以在连接后再次加载。
var db = require('diskdb');
// 第一种加载方式
db = db.connect('/examples/db');
db.loadCollections(['articles']);
// 第二种加载方式
db.connect('/examples/db');
db.loadCollections(['articles']);
// 第三种加载方式
db.connect('/examples/db')
.loadCollections(['articles']);
// 第四种加载方式
db.connect('/examples/db', ['articles']);
数据集合的保存
db.collectionName.save(object);
例如:
var db = require('diskdb');
db.connect('db', ['articles']);
var article = {
title : "diskDB rocks",
published : "today",
rating : "5 stars"
}
db.articles.save(article);
// 或者
db.articles.save([article]);
保存后的文件内容如下:
[
{
"title": "diskDB rocks",
"published": "today",
"rating": "5 stars",
"_id": "0f6047c6c69149f0be0c8f5943be91be"
}
]
读取数据
db.collectionName.find()
例如:
var db = require('diskdb');
db.connect('/examples/db', ['articles']);
db.articles.find();
/*
返回:
[{
title: 'diskDB rocks',
published: 'today',
rating: '5 stars',
_id: '0f6047c6c69149f0be0c8f5943be91be'
}]
*/
读取第一条数据
db.collectionName.findOne(query)
var db = require('diskdb');
db.connect('/examples/db', ['articles']);
db.articles.findOne({_id: '0f6047c6c69149f0be0c8f5943be91be'});
更新数据
db.collectionName.update(query, data, options)
var db = require('diskdb');
db.connect('/examples/db', ['articles']);
var query = {
title : 'diskDB rocks'
};
var dataToBeUpdate = {
title : 'diskDB rocks again!',
};
var options = {
multi: false, // true 时更新所有数据,否则更新第一条,默认 false
upsert: false // 当记录不存在时,插入新数据。默认 false
};
var updated = db.articles.update(query, dataToBeUpdate, options);
console.log(updated); // { updated: 1, inserted: 0 }
删除数据
db.collectionName.remove(query, multi)
var db = require('diskdb');
db.connect('/examples/db', ['articles']);
const multi = true;
db.articles.remove({rating : "5 stars"}, multi); // multi 为 true 时删除所有数据,否则删除第一条。
// 不写条件时删除所有数据
db.articles.remove();
统计
db.collectionName.count()
var db = require('diskdb');
db.connect('/examples/db', ['articles']);
db.articles.count(); // 返回集合数量
至此,我们常用的功能基本都满足了,下次我们介绍如何将 Node 应用打包成独立的可执行文件。
【技术创作101训练营】
- webapp开发调试环境--weinre配置
- AWK 深入浅出教程
- Docker系列教程09-使用Docker Hub管理镜像
- C++11基础学习系列一
- 触屏touchstart 与 click
- Linux DNS之dig利器
- Docker系列教程08-Dockerfile实战
- VirtualBox和Vmware安装增强功能
- 事件委托与阻止冒泡
- Linux网络工具之Ping命令
- Linux DNS之nslookup命令
- 【LEETCODE】模拟面试-108-Convert Sorted Array to Binary Search Tree
- javascript单线程环境实现真正的setTimeout
- 利用pipework与OVS构建跨主机容器网络
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP+iframe模拟Ajax上传文件功能示例
- Centos7 Yum安装PHP7.2流程教程详解
- PHP session垃圾回收机制实例分析
- thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
- Python常用库Numpy进行矩阵运算详解
- PHP设计模式之建造者模式(Builder)原理与用法案例详解
- PHP大文件切割上传并带进度条功能示例
- PHP设计模式之观察者模式入门与应用案例详解
- Python文件夹批处理操作代码实例
- ThinkPHP框架结合Ajax实现用户名校验功能示例
- Laravel框架Eloquent ORM新增数据、自定义时间戳及批量赋值用法详解
- PHP使用HTML5 FileApi实现Ajax上传文件功能示例
- python3.7调试的实例方法
- Laravel框架控制器,视图及模型操作图文详解
- PHP实现带进度条的Ajax文件上传功能示例