DiskDB,一个不用网的数据库

时间:2022-07-25
本文章向大家介绍DiskDB,一个不用网的数据库,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

作为程序员,偶尔会冒出些新奇的想法,又不希望实现起来太麻烦,比如说做一个单机版的客户管理系统。

这时候我们可能会希望有个这样的存储工具:

  1. 不需要网络
  2. 接口成熟
  3. 可嵌入式

如果我们需要的是关系型数据库,可以选择 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训练营】