鐵人賽快過一半了!大家再努力撐下去。
在想要將我們的 SQL 語法配合路由連接資料之前,
前幾天我們都使用 node mysqlConnection.js
來測試執行 SQL ,
但是當我們要再打路由方法時,就需要模組化讓其他檔案可以引用這個函式,
使其更容易重複使用。
// config/mysqlConnection.js
const mysql = require('mysql2/promise')
async function mysqlConnection() {
try {
// 建立與數據庫的連接
const connection = await mysql.createConnection({
host: 'localhost',
port: 3306,
user: 'root',
database: 'book',
password: '${密碼}'
})
return connection; // 返回連接對象
} catch (error) {
console.error('連接數據庫時出現錯誤:', error)
}
}
module.exports = {
mysqlConnection
} // 使用 module.exports 將函式模組化
接著,回到我們的 book 路由,使用 mysqlConnection
模組。
const { mysqlConnection} = require('../../config/mysqlConnection'')
通過這種方式,你可以在應用程序中的任何地方輕鬆地重複使用createConnection
函式,
並更容易管理 MySQL 連接。
接下來,就可以在各種路由的方法底下執行不同的 MySQL 連接操作。
// routes\modules\book.js
router.get('/', async (req, res) => {
try {
// 建立與數據庫的連接
const connection = await mysqlConnection()
await connection.query('SELECT * FROM `booktest`')
// 關閉連接
connection.end()
} catch (error) {
console.error('連接數據庫時出現錯誤:', error)
}
// res.send('Get a book')
res.render('page',{'text': 'Get a book'})
})
router.post('/', async (req, res) => {
try {
// 建立與數據庫的連接
const connection = await mysqlConnection()
await connection.query('INSERT INTO `booktest` (`bookName`) VALUES ("testBook-1")')
// 關閉連接
connection.end()
} catch (error) {
console.error('連接數據庫時出現錯誤:', error)
}
// res.send('Post a book')
res.render('page',{'text': 'Post a book'})
})
完成後試打看看這些方法,看有沒有顯示連線失敗或其他錯誤訊息,
如果沒有顯示錯誤的話,就可以再到資料庫看看資料有沒有順利寫進去!
以下是使用 POST 新增書名為 testBook-1
的資料。
資料庫也有該筆資料寫進去。
慢慢的一步一步地走到這裡,大家都還可以嗎?
今天就先介紹到這裡,
大家也可以試著改其他路由,其實就是把昨天所學到的 SQL 語法加到我們的程式裡面,
多練習的話可以更熟悉每個 SQL 語法,這些都是最基礎也是最常用到的。
那以上就先到這裡我們明天繼續~