使用Node.js和SQLite實現輕量級資料庫 | 全能工程師之路

一、Node.js和SQLite

Node.js 是一個基於 V8 引擎的 JavaScript 運行環境,可以讓 JavaScript 在伺服器端運行。而 SQLite 是一個自包含、無需伺服器的輕量級資料庫,使用起來非常簡便。結合使用 Node.js 和 SQLite,我們可以實現一個輕量級的、快速的、一體化的資料庫應用。Node.js 帶來了非常完美的非同步 I/O 機制,使得我們可以用非常優美的方式來編寫資料庫應用程序。

二、SQLite 的特點

SQLite 資料庫具有如下特點:

1. 無需伺服器,解壓即可直接使用,非常方便;

2. 支持 SQL 資料庫標準,支持原子性、一致性、隔離性和持久性(ACID)特性;

3. 非常快速,支持千萬或億級數據操作;

4. 資料庫文件是一個獨立的小文件,備份和遷移非常方便;

5. 支持數據加密,可以保證數據的安全性。

三、SQLite 的安裝和使用

在 Node.js 中使用 SQLite,我們需要首先在本地安裝 SQLite。以 Windows 平台為例,我們可以從 SQLite 官網(https://www.sqlite.org/download.html) 下載預編譯二進位文件。將下載好的 zip 包解壓後,就可以在命令行中運行 SQLite 了。

/* 使用 Node.js 操作 SQLite */

// 載入 sqlite3 模塊
const sqlite3 = require('sqlite3').verbose();

// 打開一個資料庫連接
let db = new sqlite3.Database('test.db', (err) => {
  if (err) {
    console.error(err.message);
  }
  console.log('Connected to the test.sqlite3 database.');
});

// 創建表
db.serialize(() => {
  db.run('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age INTEGER)');
});

// 插入數據
db.serialize(() => {
  db.run(`INSERT INTO users (name, age) VALUES ('Alan', 18)`);
});

// 查詢數據
db.serialize(() => {
  db.each(`SELECT * FROM users`, (err, row) => {
    if (err) {
      console.error(err.message);
    }
    console.log(row);
  });
});

// 關閉連接
db.close((err) => {
  if (err) {
    console.error(err.message);
  }
  console.log('Close the db connection.');
});

上述代碼使用 Node.js 中的 sqlite3 模塊連接 SQLite 資料庫。我們首先創建了一個 test.db 的資料庫連接,然後創建了一個 users 表,接著插入了一條記錄,最後查詢了所有的用戶數據。需要注意的是,代碼中的每一段操作都要用 db.serialize() 方法包裹起來,這樣確保數據操作的順序是正確的。最後我們用 db.close() 方法關閉了資料庫連接。

四、Node.js 中的 Sequelize 模塊

在實際的 Node.js 應用中,通常會使用到 ORM(Object Relational Mapping)模塊。ORM 模塊可以將資料庫中的表與實際的對象(Object)或類(Class)進行映射,使得對象和類可以方便地操作資料庫,並提供更好的可移植性和安全性。Sequelize 是一個非常好用的 Node.js 中間件,提供了非常強大的 ORM 功能,可以實現輕鬆訪問多種不同的資料庫系統。

我們可以先使用 npm 來安裝 sequelize 和 sequelize-cli:

$ npm install --save sequelize
$ npm install --save-dev sequelize-cli

安裝完成後,我們可以使用 sequelize-cli 來創建一個示例項目:

$ npx sequelize-cli init

這個命令將會創建一個名為 models 的文件夾,裡面包含 Sequelize 的一些默認設置、配置和示例模型。關於模型(Model)的詳細講解,讀者可以查看相關文檔。

在實際使用中,我們需要先連接資料庫,然後定義模型並進行數據操作,最後關閉資料庫連接。以下是 Node.js 中使用 Sequelize 進行數據操作的示例代碼(示例數據包含用戶信息和文章信息):

/* 使用 Sequelize 進行數據操作 */

const Sequelize = require('sequelize');
const sequelize = new Sequelize({
  dialect: 'sqlite',
  storage: 'test.sqlite3'
});

// 定義用戶模型
const User = sequelize.define('user', {
  name: Sequelize.STRING,
  age: Sequelize.INTEGER
});

// 定義文章模型
const Article = sequelize.define('article', {
  title: Sequelize.STRING,
  content: Sequelize.TEXT
});

// 建立用戶與文章之間的關係
User.hasMany(Article, {as: 'articles'});
Article.belongsTo(User);

// 查詢所有用戶
User.findAll().then(users => {
  console.log(users);
});

// 查詢一個用戶和其所有文章
User.findOne({where: {name: 'Alan'}}).then(user => {
  console.log(user);
  user.getArticles().then(articles => {
    console.log(articles);
  });
});

// 插入一條用戶數據
User.create({name: 'John', age: 20}).then(user => {
  console.log(user.toJSON());
});

// 更新一篇文章的內容
Article.findOne({where: {title: 'Node.js'}}).then(article => {
  article.content = 'Hello, Node.js!';
  article.save().then(() => {
    console.log('Update article success!');
  });
});

// 刪除一篇文章
Article.findOne({where: {title: 'Node.js'}}).then(article => {
  article.destroy().then(() => {
    console.log('Delete article success!');
  });
});

// 關閉資料庫連接
sequelize.close();

五、總結

使用 Node.js 和 SQLite 實現輕量級資料庫需要掌握 Node.js 和 SQLite 的基礎知識,以及 Sequelize 中 ORM 的基本操作。總體來說,這種方法非常適合於快速構建、快速迭代的輕量級應用。因為使用 SQLite,我們免去了連接複雜的資料庫伺服器,避免了因為資料庫問題造成的訪問延遲,可以讓我們直接將數據存儲在客戶端或者單一的伺服器上。

原創文章,作者:FAVV,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/135535.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
FAVV的頭像FAVV
上一篇 2024-10-04 00:13
下一篇 2024-10-04 00:13

相關推薦

發表回復

登錄後才能評論