对于前端数据存储的需求,我们通常会使用如 IndexedDB、LocalStorage 等浏览器自带的存储方案。然而这些方案都存在一定的限制,譬如 IndexedDB 只能存储结构化数据,LocalStorage 只能存储字符串类型的数据等等。因此我们需要一种全新的数据存储方案来弥补这些不足,并且具有更为灵活的操作方式。这时,npm 上的 gun.db 就是一个不错的选择。
准备工作
在学习 gun.db 之前,我们需要先安装 gun.db 包。可以打开终端,使用以下命令进行安装。
npm install gun
安装完成后,我们需要引入 gun 依赖。
import Gun from 'gun'; import 'gun/lib/load'; import 'gun/lib/path';
基本操作
创建 gun 实例
const gun = Gun();
写入数据
gun.get('user').put({ name: 'Jack', age: 27, });
读取数据
gun.get('user').once((data, key) => { console.log(data); });
更新数据
gun.get('user').put({ name: 'Tom', age: 28, });
删除数据
gun.get('user').put(null);
高级操作
指定数据域
不同于关系型数据库或者其它 NoSQL 数据库,gun.db 是一款极为灵活的数据库,其主要的表达数据的方式是使用 gun 的 path。由于 path 可以自由组合,因此 gun.db 具有极高的可操作性。接下来我们将通过一些高级操作来演示 gun.db 的灵活性。
gun.get('user/1').put({ name: 'Charlie', age: 20, });
修改或更新数据域
gun.get('user/1').put({ name: 'Charlie', age: 21, });
删除数据域
gun.get('user/1').put(null);
读取指定数据域
gun.get('user/1').once((data, key) => { console.log(data); });
批量写入数据域
-- -------------------- ---- ------- ---------------------- ------ - ----- ----- ---- --- -- ------ - ----- ----- ---- --- -- ------ - ----- ----- ---- --- -- ---
批量读取数据域
gun.get('user').map().once((data, key) => { console.log(data); });
总结
通过本文的介绍,我们了解了 gun.db 的基本操作,以及如何使用 gun.db 进行高级操作。gun.db 具有非常灵活的数据操作方式,可与其它数据库进行结合,实现不同的功能。同时,学习 gun.db 也有助于我们更好的理解传统的 SQL 和 NoSQL 数据库,更加全面地掌握数据存储技术,具有重要的指导意义。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056bd181e8991b448e5741