iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
Modern Web

新手友善園區-如何架設人生第一個網站系列 第 25

Day-25 與數據庫整合:使用 Express.js 與 MongoDB 進行數據持久化

  • 分享至 

  • xImage
  •  

在前面的文章中,我們已經學會了如何使用 MongoDB 來儲存和讀取數據,並學習了如何使用 Express.js 來構建 API。今天,我們將進一步整合這兩個工具,實現數據的持久化操作,讓伺服器不僅能處理用戶的請求,還能與數據庫進行無縫溝通。

為什麼要進行數據持久化?

數據持久化是指將數據存儲在持久存儲設備(如硬碟、雲端等)中,確保數據在系統重啟或崩潰後不會丟失。對於一個網站或應用來說,數據持久化非常重要,因為它能保障數據的長期保存和有效管理。

MongoDB 是一個 NoSQL 資料庫,擅長儲存大規模的文檔數據,非常適合網站和現代應用的需求。而 Express.js 則是 Node.js 最常用的伺服器框架之一,可以輕鬆與 MongoDB 整合,完成數據存儲、查詢和更新的功能。

設置 MongoDB 與 Express.js 的整合

我們將結合 MongoDB 和 Express.js,創建一個完整的 API,並實現以下功能:

  • 新增數據到 MongoDB。
  • 從 MongoDB 讀取數據。
  • 更新和刪除數據。

1. 安裝必需的工具

首先,在你的專案中,確保已安裝 Mongoose 和 Express.js。打開命令行並運行以下指令:

npm install express mongoose

這會將 Mongoose 與 Express.js 安裝到你的專案中,並準備進行數據庫操作。

2. 設置 MongoDB 連接

app.js 中,我們將添加 MongoDB 的連接代碼。確保你的 MongoDB 伺服器在本地或雲端執行中,然後在你的專案中添加以下代碼來連接到 MongoDB:

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/mydatabase', {
    useNewUrlParser: true,
    useUnifiedTopology: true
})
.then(() => console.log('Connected to MongoDB'))
.catch(err => console.error('Could not connect to MongoDB', err));

這段代碼將 MongoDB 伺服器與 Node.js 進行連接,並確保連接成功後進行後續操作。

3. 定義數據結構 (Schema) 和模型

為了在 MongoDB 中儲存數據,我們需要定義數據的結構。這可以使用 Mongoose 來定義 Schema,然後創建一個模型來管理數據。

const userSchema = new mongoose.Schema({
    name: { type: String, required: true },
    email: { type: String, required: true, unique: true },
    age: Number
});

const User = mongoose.model('User', userSchema);

這裡定義了一個簡單的用戶結構,包含 nameemailage 三個欄位,並且確保 email 是唯一的,防止重複數據。

4. 創建 API 來處理數據

接下來,我們將實現 Express.js 的 API 來處理用戶的數據儲存、查詢、更新和刪除。
新增數據到 MongoDB

app.post('/users', async (req, res) => {
    try {
        const newUser = new User({
            name: req.body.name,
            email: req.body.email,
            age: req.body.age
        });

        const savedUser = await newUser.save();
        res.status(201).json(savedUser);
    } catch (error) {
        res.status(400).send('Error saving user: ' + error.message);
    }
});

這段代碼會接收用戶的 POST 請求,然後將數據儲存在 MongoDB 中。如果成功,伺服器會返回新增的用戶數據;如果失敗,則會返回錯誤訊息。

讀取所有用戶數據

app.get('/users', async (req, res) => {
    try {
        const users = await User.find();
        res.json(users);
    } catch (error) {
        res.status(500).send('Error retrieving users: ' + error.message);
    }
});

這段代碼會查詢 MongoDB 中的所有用戶數據,並以 JSON 格式返回給客戶端。

更新用戶數據

app.put('/users/:id', async (req, res) => {
    try {
        const updatedUser = await User.findByIdAndUpdate(req.params.id, req.body, { new: true });
        res.json(updatedUser);
    } catch (error) {
        res.status(400).send('Error updating user: ' + error.message);
    }
});

這段代碼允許用戶根據 ID 更新數據,並返回更新後的用戶資料。

刪除用戶數據

app.delete('/users/:id', async (req, res) => {
    try {
        await User.findByIdAndDelete(req.params.id);
        res.send('User deleted');
    } catch (error) {
        res.status(400).send('Error deleting user: ' + error.message);
    }
});

這段代碼允許根據用戶的 ID 刪除指定的用戶數據。

5. 測試 API

現在,我們可以啟動伺服器並使用 Postman 或 curl 等工具來測試這些 API。這些 API 功能涵蓋了用戶數據的創建、查詢、更新和刪除,是一個完整的 CRUD 操作範例。

node app.js

結論

今天的文章中,我們學習了如何將 MongoDB 與 Express.js 整合,實現數據的持久化操作。這使得我們的網站能夠穩定儲存用戶數據,並提供完善的數據管理功能。透過這樣的設置,你的應用程式將能夠應對更加複雜的數據操作需求,並確保數據的安全與穩定。


上一篇
Day-24 數據庫入門:使用 MongoDB 儲存與讀取數據
下一篇
Day-26 免費架設網站的方法:Netlify 與 Google Sites
系列文
新手友善園區-如何架設人生第一個網站30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言