• Node嵌入式数据库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,
    })

      初始化数据库时,我们传入两个参数:filename 和 autoload 。

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

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

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

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

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

    三、遇到问题

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

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

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

      什么意思呢?

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

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

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

  • 相关阅读:
    (数据科学学习手札48)Scala中的函数式编程
    Java中的集合(十三) 实现Map接口的Hashtable
    Java中的集合(十二) 实现Map接口的WeakHashMap
    Java中的集合(十一) 实现Map接口的TreeMap
    Java集合(十)实现Map接口的HashMap
    Java集合(九)哈希冲突及解决哈希冲突的4种方式
    Java集合(八)哈希表及哈希函数的实现方式
    Java中的集合(七)双列集合顶层接口------Map接口架构
    Java中的集合(六)继承Collection的Set接口
    Java中的集合(五)继承Collection的List接口
  • 原文地址:https://www.cnblogs.com/phoebeyue/p/12846648.html
Copyright © 2020-2023  润新知