นักผจญโค้ด (CODE HUNTER)

NodeJS + ExpressJS + MySql CURD


     บทความนี้เป็นบันทึกการเรียนรู้การเขียน service ด้วย NodeJS +  ExpressJS + MySql ของเจ้าของบล็อกเอง
    

เครื่องมือที่ใช้ในการเรียนรู้จะประกอบไปด้วย



เริ่มต้นด้วยการสร้างโฟลเดอร์สำหรับการทำงาน พิมพ์คำสั่ง npm init --y เพื่อทำการสร้างไฟล์ package.json สำหรับการใช้งานคำสั่ง npm   คำสั่ง --y หมายความว่าเราจะทำการตอบ yes ในทุกๆ คำถามของคำสั่ง npm init

สร้างไฟล์และโฟลเดอร์

  • config เก็บการตั้งค่าต่างๆ ของโปรเจค เช่น ข้อมูลการติดต่อฐานข้อมูล
  • controllers เป็นตัวกลางในการติดต่อกันระหว่าง model กับ router และจัดการ handle error ต่างๆ 
  • models   ติดต่อกับฐานข้อมูล
  • public เก็บรูปภาพ ฯลฯ
  • routers  กำหนดเส้นทางของโปรเจค
  • app.js ไฟล์หลักในการรันโปรเจค


เปิดไฟล์ package.json และทำการพิมพ์คำสั่งภายใต้ tag script "dev":"nodemon app.js"
ความหมายของคำสั่งคือ เมื่อเรียกใช้งานด้วยคำสั่ง yarn dev หรือ npm dev ระบบจะทำการเรียกใช้คำสั่งที่เรากำหนดไว้ซึ่งในที่นี้คือ nodemon app.js กรณีที่ต้องการเปลี่ยนไฟล์ที่ต้องการให้เรียกเป็นไฟล์อื่น ก็สามารถแทนที่ app.js ด้วยชื่อที่ต้องการ


เปิดไฟล์ app.js และพิมพ์คำสั่งต่างๆ ดังนี้

app.set('port', process.env.port || port) กำหนด port
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json()) กำหนดให้ express ใช้ body เป็น json
app.use(express.static(path.join(__dirname, 'public'))) กำหนดให้ express เรียกใช้โฟลเดอร์ public

สร้างไฟล์ db.config.js ภายใต้โฟลเดอร์ config

กำหนดค่าต่างๆ ที่จำเป็นคต้องใช้ในการเชื่อมต่อฐานข้อมูล
HOST: "localhost",
USER: "root",
PASSWORD: "",
DB: "",
PORT: 3306

สร้างไฟล์ db.js ภายใต้โฟลเดอร์ config พิมพ์คำสั่งสำหรับการสร้าง connection

เรียกใช้งาน mysql
const mysql = require("mysql")
เรียกใช้ config ต่างๆ
const dbConfig = require("./db.config.js");

กำหนดค่าต่าง
const connection = mysql.createConnection({
host: dbConfig.HOST,
user: dbConfig.USER,
password: dbConfig.PASSWORD,
database: dbConfig.DB,
port: dbConfig.PORT
});

สร้างการเชื่อมต่อ โดยกรณีที่มีการ error ให้ throw exception ออกมา
connection.connect(err => {
if (err) throw err;
console.log("Successfully connected to the database.");
});

export เพื่อให้ไฟล์อื่นสามารถเรียกใช้งานได้
module.exports = connection;

สร้างไฟล์ category.model.js ภายใต้โฟลเดอร์ models


สร้างไฟล์ category.controller.js ภายใต้โฟลเดอร์ controllers


สร้างไฟล์ category.router.js ภายใต้โฟลเดอร์ routers


ทำการ import ตัว controller เก็บไว้ในตัวแปรชื่อ controller
const controller = require("../controllers/category.controller");

กำหนด route ให้กับ api ถ้าถูกเรียกมาเป็น post ให้ controller เรียกใช้ function create
router.post("/", controller.create);

กำหนด route ให้กับ api ถ้าถูกเรียกมาเป็น get ให้ controller เรียกใช้ function findAll
router.get("/", controller.findAll);

กำหนด route ให้กับ api ถ้าถูกเรียกมาเป็น get และมีการส่ง id มาด้วย ให้ controller เรียกใช้ function findOne
router.get("/:id", controller.findOne);

กำหนด route ให้กับ api ถ้าถูกเรียกมาเป็น put และมีการส่ง id มาด้วย ให้ controller เรียกใช้ function update
router.put("/:id", controller.update);

กำหนด route ให้กับ api ถ้าถูกเรียกมาเป็น delete และมีการส่ง id มาด้วย ให้ controller เรียกใช้ function delete
router.delete("/:id", controller.delete);

กำหนด route ให้กับ api ถ้าถูกเรียกมาเป็น delete ให้ controller เรียกใช้ function deleteAll
router.delete("", controller.deleteAll);

export route ให้ไฟล์อื่นสามารถเรียกใช้งานได้ด้วยคำสั่ง
module.exports = router

สั่งรันด้วยคำสั่ง yarn dev หรือ npm dev

ทดสอบ API ด้วย Post man


ทดสอบการบันทึกข้อมูลด้วย url  http://localhost:5000/category






ทดสอบการแก้ไขข้อมูลด้วย url  http://localhost:5000/category



ทดสอบการเรียกดูข้อมูลทั้งหมดด้วย url  http://localhost:5000/category


ทดสอบการลบข้อมูลด้วย url  http://localhost:5000/category/5


Share:

0 ความคิดเห็น:

แสดงความคิดเห็น

Recent Posts

Popular Posts

About Me

About Me