本篇文章我們將討論兩個主要的資料庫選擇:NoSQL 的 MongoDB 和關聯式資料庫的 MySQL。討論 Mongoose 這個 MongoDB 的 ODM 庫,以及如何使用 Node.js 的模組來連接和操作 MySQL 資料庫。
在現代 Web 開發中,選擇合適的資料庫系統是一個重要的決策,因為它將直接影響你的應用程式的效能、可擴展性和數據處理能力。兩個主要的資料庫類型是 NoSQL 資料庫和關聯式資料庫。以下我們將深入探討這兩者之間的差異。
NoSQL 資料庫是一種非關聯式、分散式的資料儲存系統,主要特點是沒有嚴格的結構化模式。代表可以將各種不同格式的數據 (文本、圖像、JSON 文件等) 存儲在同一個資料庫中。
關聯式資料庫是一種傳統的數據儲存系統,主要使用表格結構來組織數據,並使用 SQL (結構化查詢語言) 進行查詢和操作。每個表格都有預定義的模式,包括列名和數據類型。
Mongoose 是一個 Node.js 的 ODM (Object-Document Mapping) 庫,專為 MongoDB 提供了一個優雅的方式來定義數據模型、執行查詢和管理數據庫連接。
從 MongoDB 官方網站 下載適合你系統的版本。
- npm install mongoose
- const mongoose = require("mongoose");
- mongoose.connect("mongodb://localhost/[db-name]", {
- useNewUrlParser: true,
- useUnifiedTopology: true,
- });
- const db = mongoose.connection;
- db.on("error", console.error(console));
- db.once("open", () => {
- console.log('Connected');
- });
請將 mongodb://localhost/[db-name]
替換為目標資料庫 MongoDB 連接字串,並確保 MongoDB 伺服器正常運行。
使用 Mongoose,我們需要定義模型來描述數據的結構。以下新增一個 user.js
作為範例:
- const mongoose = require("mongoose");
- const userSchema = new mongoose.Schema({
- username: String,
- email: String,
- age: Number
- });
- const User = mongoose.model('User', userSchema);
- module.exports = User;
透過上面設定的模型創建一個新用戶作為範例:
- const User = require('./models/user'); // 替換為user.js路徑
- const newUser = new User({
- username: "pardnchiu",
- email: "mail@pardn.ltd",
- age: 30
- });
這個範例創建了一個新使用者物件,並將其保存到 MongoDB 數據庫中。
MySQL 是一個開源的關聯式資料庫管理,使用表格結構來儲存數據,並使用 SQL 作為查詢語言,以高性能、穩定性和廣泛的支援而聞名。適用於各種規模的應用程式。
從 MySQL 官方網站 下載適合你系統的版本。
- npm install mysql
需要引入 mysql
模組並建立與 MySQL 資料庫的連接。
- const mysql = require("mysql");
- const db = mysql.createConnection({
- host: "[HOST]",
- user: "[ACCOUNT]",
- password: "[PASSWORD]",
- database: "[DATABASE]"
- });
- // 測試連接
- db.connect(err => {
- if (err) {
- console.error(err);
- }
- else {
- console.log("success");
- };
- });
使用 db.query()
方法執行 SQL 查詢。
- // 查詢所有使用者
- db.query("SELECT * FROM users", (err, ary) => {
- if (err) return console.error(err);
- console.log(ary);
- });