此專案為 MFEE27 資策會前端工程師就業養成班 HANDMADE 後端,使用 Node.js,啟動專案請先依照 .env.example 設定好 .env 檔案並安裝好套件
- Git :
2.37.0.widows.1
- Node :
16.16.0
- Mysql2 :
^2.3.3
- Socket.io :
^4.5.2
- Googleapis :
^107.0.0
- @Google-cloud/local-auth :
^2.1.0
- restful API 主體(ex./api/user)
- 第一個參數:要到達的路由
- 第二個參數:router
app.use('/api/product', productRouter)
app.use('/api/course', courseRouter)
app.use('/api/store', storeRouter)
- restful API 動詞( get , post, put , delete )
- 第一個參數:要到達的路由
- 第二個參數:call back 函式 (放入 controller export 出來的函式)
router.get('/:storeId', getStoreCourse)
router.get('/', getAllCourse)
router.post('/:courseId', addFavoriteCourseTable)
router.delete('/:courseId', removeFavoriteCourseTable)
router.get('/detail/:courseId', getCourseDetail)
router.get('/comment/:courseCommentId', getCourseComment)
module.exports = router
- 在 controllers 資料夾中新增 reply-controller.js 檔案,裡面寫與 db 溝通的 sql 語法(記得引入資料庫),最後要 export 出寫好的 function。
const getStoreCourse = async (req, res) => {
const storeId = req.params.storeId
const [data] = await pool.execute(
'SELECT course.*,store.name AS store_name, category.category_en_name FROM course JOIN store ON course.store_id = store.id JOIN category ON category.id = course.category_id WHERE course.store_id =?',
[storeId]
)
const [courseImgs] = await pool.execute('SELECT course_img.*,course.store_id FROM course_img JOIN course ON course.id = course_img.course_id')
const reaponse = data.map((v) => {
const course_img = courseImgs.filter((img) => img.course_id === v.id)
const imgName = course_img.map((img) => img.img_name)
v['imgName'] = imgName
return v
})
res.json(reaponse)
}