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會自動壓縮數據,保證你查詢出來的數據沒有重復的。

  我馬上代碼試了下,果然,之前更新數據時,在文檔末尾新增的數據,都不見了,相關屬性值都被合並到之前已有的對於某條記錄里去了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM