iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0

前言

昨天有提了一些前置作業~
還沒看過的可以先去前一篇歐

來連接DB吧!


首先,新增一個資料夾取名為 config
並在config資料夾下建立一個 db.js 檔案

再來按照下方所示
因為昨天我們使用db4free作為我們的database host
另外要記得不要洩漏任何有關你的db的敏感資訊!

const mysql = require('mysql');

const db = mysql.createPool({
  host: "db4free.net",
  user: "你的DB user name~~~~",
  password: "你的DB密碼~~~~~",
  database: "你的DB名字~~~~",
  connectTimeout: 60000,
  //可以自行設定timeout秒數,預設是10秒 也許會不夠
})

//optional
db.getConnection(()=>{
  console.log('Connect to my db successfully!!')
})

module.exports = db;

然後再去 index.js 寫入⬇️

const mydb = require('./config/db');

儲存檔案~~~!!

router設定(測試各種api的地方)


DB設定完後
接著我們來新增router吧~~🥳

首先在我們昨天新增的 routes 檔案夾下,新增一個 router.js檔案
我們先新增一個get

const express = require('express')
const router = require('express').Router();

router.get('/', (req,res,next)=>{
  res.send('Gummy say hi to u')
})

module.exports = router;

然後在index.js ⬇️

const rout = require("./routes/router");
app.use(rout);

儲存~~
接著可以去localhost看看router有沒有接上!

/images/emoticon/emoticon42.gif

Get All Users Api - 建立Model!


我們準備來建立第一個model啦~
首先在 models 資料夾下建立一個為 User.js 的檔案

// communcate to user db, determaine a database structured
const db = require("../config/db");

class UserModel {

  static async getusers(){
    return new Promise((resolve, reject) => {
      
      //my table name is 'users'
      db.query("select * from users", [], (error, result) => {

        if(!error){
          resolve(result);
        }else{
          reject(error);
        }        
      })
    })
  }
}
module.exports = UserModel; //記得export喔~~

在query下你要對資料庫執行的指令~

接著在controllers資料夾下,建立UserController.js檔案
我們先建立get all users 的controllers

const UserModel = require("../models/User")
const user = require("../models/User")
class UserController {
    static async getallusers(req, res) {
        try {
            console.log("Successfully get the users db!")
            var results = await UserModel.getusers();
            if (results) {
                res.send(results);
            } else {
                res.send("no");
            }
        } catch (e) {
            //prints only the message, you knew there is an error already
            console.error("there is an error " + e);
            //it prints the whole stack trace,console.log(e)
        }
    }
}
module.exports = UserController;

然後再回去router新增一個/allusers router

router.get("/allusers", UserController.getallusers);

SAVE!
之後到瀏覽器輸入port加上/allusers

出現DB裡的資料了~~


上一篇
[Day04] 簡易MVC CRUD實作 - 1 前置作業! (node.js)
下一篇
[Day06] 簡易MVC CRUD實作 - 3
系列文
Design Pattern - 無所不在的設計模式30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言