今天將專注於建立應用程式與 MongoDB 資料庫的連接,並設置必要的中介軟體(Middleware)來處理請求資料、驗證身份和管理錯誤處理。這些基礎設置對於確保應用程序的穩定性和功能性至關重要。
接下來要使用 Mongoose 來管理 MongoDB 連接和操作資料庫中的資料模型。Mongoose 提供了一個簡單的 API,使得與 MongoDB 的互動更加直觀。
在專案目錄中執行以下命令來安裝 Mongoose:
bash
npm install mongoose
我們會在 config/ 資料夾中創建一個 db.js 檔案,專門用來管理 MongoDB 連接。
新建 config/db.js 檔案:
js
const mongoose = require('mongoose');
const config = require('config'); // 用於引入環境配置
const db = config.get('mongoURI'); // 從配置中取得 MongoDB 的 URI
const connectDB = async () => {
try {
await mongoose.connect(db, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false,
});
console.log('MongoDB Connected...');
} catch (err) {
console.error(err.message);
process.exit(1); // 若連接失敗,退出程式
}
};
module.exports = connectDB;
新增 MongoDB 的連接字串。確保在 config/default.json 中包含 MongoDB 的 URI:
json
{
"mongoURI": "mongodb://localhost:27017/financeApp"
}
在 server.js 中引入並呼叫 connectDB 函數來連接資料庫:
js
const connectDB = require('./config/db');
// 連接 MongoDB 資料庫
connectDB();
這樣應用就與 MongoDB 建立了穩定的連接,並準備好進行後續的資料儲存操作。
中介軟體是 Express 應用中的核心部分,它負責處理請求和響應之間的邏輯操作。接著要設置一些常用的中介軟體來提升應用的功能性和安全性。
安裝一些常見的中介軟體模組:
bash
npm install express-validator config jsonwebtoken bcryptjs
在處理用戶的 API 請求時,我們通常需要解析 JSON 資料或 URL 編碼的資料。Express 提供了內建的 express.json() 中間件來處理這些資料。
在 server.js 中啟用:
js
app.use(express.json({ extended: false }));
如果我們的前端應用程序和 API 位於不同的域(例如 React 前端與 Node.js API),則需要啟用 CORS 來允許跨域請求。
安裝 CORS:
bash
npm install cors
在 server.js 中啟用 CORS:
js
const cors = require('cors');
app.use(cors());
使用 JWT 來進行用戶身份驗證。在用戶成功登入後,將會生成一個 JWT,該令牌會附帶在後續的請求標頭中,用於識別用戶身份。
創建 middleware/authMiddleware.js,並實現一個用於驗證 JWT 的中介軟體:
js
const jwt = require('jsonwebtoken');
const config = require('config');
module.exports = function (req, res, next) {
// 從 header 中獲取 token
const token = req.header('x-auth-token');
// 如果沒有 token,拒絕請求
if (!token) {
return res.status(401).json({ msg: 'No token, authorization denied' });
}
// 驗證 token
try {
const decoded = jwt.verify(token, config.get('jwtSecret'));
req.user = decoded.user;
next();
} catch (err) {
res.status(401).json({ msg: 'Token is not valid' });
}
};
在 Express 中,可以設置一個統一的錯誤處理中介軟體來捕捉所有異常,並返回適當的錯誤訊息。
新增一個錯誤處理中介軟體到 server.js:
js
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Something broke!');
});
這樣在出現異常的時候,應用將返回錯誤訊息,並在伺服器端打印出錯誤的詳細資訊,比較容易進行偵錯和修復。
今天完成了應用與 MongoDB 的連接設置,並設置了多個 Express 中介軟體,包括解析請求資料、處理跨域請求、JWT 驗證和錯誤處理。這些設置不僅提升了應用的功能性和安全性,還為後續的用戶操作和資料管理奠定了基礎。在接下來的日子裡,這些基礎設置將有助於構建穩健的個人財務管理應用。