บทความนี้เป็นบันทึกการเรียนรู้การเขียน 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