iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0

NeDB

nedb 是一個嵌入式的 NoSQL 資料庫,特別適合於 Node.js 環境下的後端應用。它提供了輕量級的文件儲存和查詢功能,並支援索引和快取機制,使得資料的存取更加高效。nedb 使用簡單,且具有良好的性能表現,非常適合用於開發單機視窗功能。

nedb 具有以下特點:

  • 嵌入式:nedb 可以直接嵌入到應用程式中,不需要額外的服務器或設置。這使得它非常適合單機視窗應用程式的開發。
  • NoSQL:nedb 使用 NoSQL 的資料模型,以文件的形式儲存資料。這種資料結構靈活且容易擴展,適合處理不規則或變化頻繁的數據。
  • 輕量級:nedb 的代碼庫非常小,運行時的內存占用也很小。這使得它在資源有限的環境下運行時更加高效。

使用 nedb 有以下優勢:

  • 簡單易用:nedb 的 API 設計簡單直觀,上手容易。開發人員可以快速上手並開始使用 nedb 進行資料儲存和查詢。
  • 高效性能:nedb 支援索引和快取機制,可以加快資料的存取速度。它的查詢引擎使用 B+ 樹結構,保證了快速的查詢效率。
  • Node.js 優化:nedb 是專為 Node.js 環境優化的資料庫。它完全兼容 Node.js,可以充分利用 Node.js 的非阻塞 I/O 模型和事件驅動特性,實現高效的資料儲存和查詢。

套件安裝

npm i @seald-io/nedb

建立資料庫存取

export class NeDataBase {
  protected readonly nedb;
  constructor() {
    // @ts-ignore
    this.nedb = new Datastore({filename: DbPath, autoload: true});
  }

  public update(data: any) {
    this.nedb.update({ Name: 'Terry' }, { $set: data }, {});
  }

  public insert(data: any) {
    this.nedb.insert(data);
  }

  public remove(data: any) {
    this.nedb.remove(data);
  }

  public find(data: any) {
    return this.nedb.find(data);
  }
}

建立Api存取

apiServer.post ('/findJsonDB', ( req, res) => {
  neDataBase.find(req.body).then((data: any) => {
    res.send(data);
  }).catch((err: any) => {
    res.status(400).send(err);
  });
});

apiServer.put('/insertJsonDB', (req, res) => {
  neDataBase.insert(req.body);
  res.send("inserted");
});

apiServer.put('/updateJsonDB', (req, res) => {
  neDataBase.update(req.body)
  res.send("update");
});

apiServer.delete('/removeJsonDB/:name', (req, res) => {
  let name = req.params["name"];
  neDataBase.remove({"Name":name});
  res.send("removed");
});

簡易測試結果

https://ithelp.ithome.com.tw/upload/images/20230920/20124238uYBgz54lBZ.png

小結

本日完成SQL和NOSQL基本資料存取機制,local端資料處軟體架構建立,後續針對前端服務進行撰寫或梳理整個後端溝通架構,確立後續功能建立.


上一篇
Day 4 - 後端環境架構(typeorm + sqlite3) - 2
下一篇
Day 6 - 前端服務資料存取
系列文
Electron Angular軟體架構與簡易功能實作學習路程實記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言