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会自动压缩数据,保证你查询出来的数据没有重复的。

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

  • 相关阅读:
    unity3d动态加载资源
    u3D大场景的优化
    C#代码规范
    游戏模型规范
    vue prop不同数据类型(数组,对象..)设置默认值
    vue-router实现页面的整体跳转
    Vue实现组件props双向绑定解决方案
    电脑连接并调试手机浏览器的网页
    对象里面的属性有值但是打印出来是空的,获取不到
    vue-cli sass安装
  • 原文地址:https://www.cnblogs.com/goloving/p/12732512.html
Copyright © 2011-2022 走看看