嵌入式数据库NeDB及遇到问题

  NeDB 是使用 Node.js 实现的一个 NoSQL 嵌入式数据库操作模块, 可以充当内存数据库,也可以用来实现本地存储,甚至可以在浏览器中使用。 查询方式比较灵活,支持使用正则、比较运算符、逻辑运算符、索引以及 JSON 深度查询等,适用于不需要大量数据处理的应用系统。

一、安装

  使用 npm 安装 NeDB ,执行如下命令:

npm install nedb --save

二、创建NeDB数据库

1、引入依赖

  首先,使用 require 引入 nedb

var NeDB = require('nedb')

2、数据库初始化

  接下来,我们需要初始化一个 NeDB 对象:

var db = new NeDB({
    filename: './user.db',
    autoload: true,
})

  初始化数据库时,我们传入两个参数:filenameautoload

  第 2 行,filename 用于指定数据存储的文件位置,在本示例中,filename 指定为同个目录下的 user.db; 第 3 行,设置 autoloadtrue ,用于自动加载数据库。

至此,我们得到了一个数据库对象 db 。 接下来,对数据库进行常规操作:插入、查询、更新、删除。

3、增删改查操作、及配置详情看官网

  https://www.w3cschool.cn/nedbintro/

  看这个,写的还是蛮清楚的

三、遇到问题

1、数据库nedb在update更新数据时,为什么总是会重新插入一条数据?

  我在使用nedb update某一行数据时,始终会在文档末尾插入一行新数据。我把nedb api用法看来看去,也没找到自己代码哪里有问题。后来仔细阅读文档其他部分。才发现了nedb 对【持久化】的解释。

  NeDB的持久性使用附加文本的方法,这意味着出于性能原因,所有更新和删除实际上都会导致在数据文件末尾添加行。每次在应用程序中加载每个数据库时,数据库都会自动压缩(即以每个文档一行的格式放回)。

  什么意思呢?

  就是每次你执行update 和 remove操作时,nedb都会在文件末尾新增加一行相应数据,一开始我想当然的认为这样总是会产生至少2条以上的重复数据。

  事实不是:在你再去查询某条数据时,nedb会自动压缩数据,保证你查询出来的数据没有重复的。

  我马上代码试了下,果然,之前更新数据时,在文档末尾新增的数据,都不见了,相关属性值都被合并到之前已有的对于某条记录里去了。

猜你喜欢

转载自www.cnblogs.com/goloving/p/12732512.html