zoukankan      html  css  js  c++  java
  • 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,
    })

      初始化数据库时,我们传入两个参数: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会自动压缩数据,保证你查询出来的数据没有重复的。

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

  • 相关阅读:
    node
    github
    [模块] pdf转图片-pdf2image
    python 15 自定义模块 随机数 时间模块
    python 14 装饰器
    python 13 内置函数II 匿名函数 闭包
    python 12 生成器 列表推导式 内置函数I
    python 11 函数名 迭代器
    python 10 形参角度 名称空间 加载顺序
    python 09 函数参数初识
  • 原文地址:https://www.cnblogs.com/goloving/p/12732512.html
Copyright © 2011-2022 走看看