iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0
自我挑戰組

30 天架設 Node.js - Express 框架:快速學習之路系列 第 12

Day 12 - 資料庫:創建、讀取、更新和刪除資料(中)

  • 分享至 

  • xImage
  •  

鐵人賽快過一半了!大家再努力撐下去。

在想要將我們的 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 的資料。

https://ithelp.ithome.com.tw/upload/images/20230905/20162304ZhMhdemI13.png

資料庫也有該筆資料寫進去。

https://ithelp.ithome.com.tw/upload/images/20230905/20162304p6uCGUBoTl.png


慢慢的一步一步地走到這裡,大家都還可以嗎?

今天就先介紹到這裡,
大家也可以試著改其他路由,其實就是把昨天所學到的 SQL 語法加到我們的程式裡面,
多練習的話可以更熟悉每個 SQL 語法,這些都是最基礎也是最常用到的。

那以上就先到這裡我們明天繼續~


上一篇
Day 11 - 資料庫:創建、讀取、更新和刪除資料(上)
下一篇
Day 13 - 資料庫:創建、讀取、更新和刪除資料(下)
系列文
30 天架設 Node.js - Express 框架:快速學習之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言