ให้ทำการสร้างไดเรกทอรี api_v1 แล้วข้างในให้สร้างอีกไดเรกทอรีชื่อ todo ภายในไดเรกทอรี todo ให้
สร้างไฟล์ todo.js และไฟล์ routes.js แต่ว่ายังก่อนเหลืออีกนิด ภายในไดเรกทอรี todo ให้สร้างอีกไดเรกทอรี
ชื่อ database ภายในไดเรกทอรี database ให้สร้างไฟล์ mock.js เราจะจำลองว่าไฟล์ mock.js เป้นไฟล์ที่ใช้
ทำงานเชื่อมต่อกับ database ให้สร้างไฟล์ mock.js ตามตัวอย่างข้างล่างต่อไปนี้
mock.js
let mock_database = []; let id = 0;
module.exports = class Query { getAllTodo(){ return new Promise( (resolve, reject) => { resolve(mock_database); }); }
getTodo(ctx){ return new Promise( (resolve, reject) => { let result = mock_database.filter((obj) => {
return obj.id === parseInt(ctx.id) }
) resolve(result); }); }
addTodo(ctx){ return new Promise( (resolve, reject) => { mock_database.push({id: id, name: ctx.name}); let result = {status: "success", newId: id} id += 1; resolve(result); }); }
updateTodo(ctx){ return new Promise( (resolve, reject) => { for(let i in mock_database){ if(mock_database[i].id === parseInt(ctx.id)) {
mock_database[i].name = ctx.name;
}
} resolve({status: "success", updatedId: parseInt(ctx.id)}); }); }
deleteTodo(ctx){ return new Promise( (resolve, reject) => { let mock_length = mock_database.length mock_database = mock_database.filter((obj) => {
return obj.id !== parseInt(ctx.id) }
)
if (mock_length !== mock_database.length) {
resolve({status: "success", deletedId: parseInt(ctx.id)});
} else reject({error: "no todo has been deleted."}); }); } }
|
จากโค้ดด้านบนภายในไฟล์ mock.js ได้สร้าง class ชื่อ Query โดยภายใน class มีการสร้างฟังก์ชัน
ทั้งหมด 5 ฟังก์ชัน และมีการสร้างตัวแปร mock_database เพื่อจำลองว่าเป็นฐานข้อมูลพร้อมด้วยตัวแปร id เพื่อ
จำลองใช้สร้าง id ของข้อมูลที่ถูกบันทึก ต่อไปจะอธิบายการทำงานของ 5 ฟังก์ชันซึ่งเป็นฟังก์ชันพื้นฐานในการ
ทำงานกับฐานข้อมูล ไม่ว่าจะใช้ฐานข้อมูลอะไรก็ไม่พ้นฟังก์ชันพื้นฐานเหล่านี้
get all todo
getAllTodo(){ return new Promise( (resolve, reject) => { resolve(mock_database); }); }
|
ใช้สำหรับดูข้อมูลทั้งหมด
get todo by id
getTodo(ctx){ return new Promise( (resolve, reject) => { let result = mock_database.filter((obj) => {
return obj.id === parseInt(ctx.id)
}) resolve(result); }); }
|
ใช้ดูข้อมูลตาม id ที่กำหนด เพราะว่าโดยทั่วไปข้อมูลที่บันทึกลงฐานข้อมูลจะมี id ของข้อมูลนั้นอยู่ ซึ่ง id
นี้จะเป็น unique คือไม่ซ้ำกัน ทำให้เราใช้ id ในการระบุข้อมูลที่เราต้องการดูได้ จากตัวอย่างด้านบนใช้คำสั่ง
filter ในการกรองข้อมูลจาก array โดยให้ return เฉพาะข้อมูลที่ตรงตามเงื่อนไข
create todo
addTodo(ctx){ return new Promise( (resolve, reject) => { mock_database.push({id: id, name: ctx.name}); let result = {status: "success", newId: id} id += 1; resolve(result); }); }
|
ใช้เพิ่มข้อมูลในตัวอย่างนี้ได้กำหนดให้โครงสร้างของข้อมูล todo ประกอบด้วย name เพียงอย่างเดียว ดัง
นั้นตอนเพิ่มข้อมูลให้ทำเป็น json ที่มี field ชื่อ name อย่างเดียวก็พอแล้ว เมื่อเพิ่มข้อมูลแล้วจะให้ id เพิ่มขึ้น 1
เพื่อให้ข้อมูลต่อไปใช้ id ใหม่ที่ไม่ซ้ำกัน
update todo
updateTodo(ctx){ return new Promise( (resolve, reject) => { for(let i in mock_database){ if(mock_database[i].id === parseInt(ctx.id)){
mock_database[i].name = ctx.name;
} } resolve({status: "success", updatedId: parseInt(ctx.id)}); }); }
|
ใช้แก้ไขข้อมูลตาม id ที่กำหนดโดยทำการวนรอบ array เพื่อหาข้อมูลที่มี id ตรงตามที่กำหนด จากนั้นก็
ทำการแก้ไขข้อมูลที่ต้องการ
delete todo
deleteTodo(ctx){ return new Promise( (resolve, reject) => { let mock_length = mock_database.length mock_database = mock_database.filter((obj) => { return obj.id !== parseInt(ctx.id) } )
if (mock_length !== mock_database.length) { resolve({status: "success", deletedId: parseInt(ctx.id)}); } else reject({error: "no todo has been deleted."}); }); }
|
ใช้ลบข้อมูลตาม id ที่กำหนดโดยมีการตรวจสอบด้วยว่ามีข้อมูลตาม id ที่กำหนดหรือไม่
ความคิดเห็น
แสดงความคิดเห็น