From b28f6d5430442bb213b7ae680e2df827ed878f99 Mon Sep 17 00:00:00 2001 From: p11037 Date: Wed, 22 Nov 2023 16:45:06 +0700 Subject: [PATCH] get by id --- controllers/favController.js | 58 +++++++++++++++++++++++++++++++++++ controllers/userController.js | 2 +- models/favorites.js | 22 +++++++------ routes/favRoute.js | 35 ++++----------------- server.js | 4 +-- 5 files changed, 80 insertions(+), 41 deletions(-) create mode 100644 controllers/favController.js diff --git a/controllers/favController.js b/controllers/favController.js new file mode 100644 index 0000000..a4166cb --- /dev/null +++ b/controllers/favController.js @@ -0,0 +1,58 @@ +const fav = require('../models/favorites.js'); +const user = require('../models/user.js'); +const mongoose = require('mongoose'); +const asyncHandler = require('express-async-handler'); + +// Get all favorites => GET api/favorites +const getAllFavorites = asyncHandler(async (req, res, next) => { + try { + const favorites = await fav.find({}); + res.json(favorites); + } catch (err) { + return next(err); + } +}); + +// Create new favorite => POST api/favorites +const createFavorite = asyncHandler(async (req, res, next) => { + try { + const { user_id, place_name, location, wheelchair_access, highway_type } = req.body; + + const newFavorite = await fav.create({ + user_id: user_id, // กำหนด user ID ให้กับ favorite + place_name, + location, + wheelchair_access, + highway_type + }); + + res.status(201).json(newFavorite); + } catch (err) { + return next(err); + } +}); + + +const getFavoritesByUserId = asyncHandler(async (req, res, next) => { + try { + const userId = req.params.userId; + + //console.log(userId) + + const favorites = await fav.find({ "user_id": userId }); + + //console.log(favorites) + + if (!favorites || favorites.length === 0) { + return res.status(404).json({ message: 'No favorites found for this user ID' }); + } + + res.json(favorites); + } catch (err) { + return next(err); + } + }); + + + +module.exports = { getAllFavorites, createFavorite, getFavoritesByUserId }; \ No newline at end of file diff --git a/controllers/userController.js b/controllers/userController.js index 78f82cf..cbcc3e9 100644 --- a/controllers/userController.js +++ b/controllers/userController.js @@ -1,6 +1,6 @@ const asyncHandler = require('express-async-handler'); -const user = require('../models/user'); const sendToken = require('../utils/jwtToken'); +const user = require('../models/user'); // Get all users => GET api/users const getAllUser = asyncHandler(async (req, res) => { diff --git a/models/favorites.js b/models/favorites.js index 58b6ac8..ab6cabf 100644 --- a/models/favorites.js +++ b/models/favorites.js @@ -1,27 +1,31 @@ const { default: mongoose } = require("mongoose") -const favSchema = new mongoose.Schema({ - user_id : {type:String,required: true}, - place_name : String, +const favoriteSchema = new mongoose.Schema({ + user_id: { + type: String, + required: true + }, + place_name: String, location: { type: { type: String, enum: ['Point'], - default: 'Point' + required: true }, coordinates: { type: [Number], required: true } }, - wheelchair_access : String, - highway_type : String, - updated_at : {type:Date, default:Date.now} -}) + wheelchair_access: String, + highway_type: String, + updated_at: { type: Date, default: Date.now } +}); -module.exports = mongoose.model('favorites',favSchema) + +module.exports = mongoose.model('favorites',favoriteSchema) //ตัวอย่างข้อมูล // { diff --git a/routes/favRoute.js b/routes/favRoute.js index 0180ff7..a15cfaf 100644 --- a/routes/favRoute.js +++ b/routes/favRoute.js @@ -1,34 +1,11 @@ const express = require('express'); const router = express.Router(); -const fav = require('../models/favorites.js'); - -router.get('/', async (req, res, next) => { - try { - const favorites = await fav.find({}); - res.json(favorites); - } catch (err) { - return next(err); - } -}); - -router.post('/', async (req, res, next) => { - try { - // ดึงข้อมูลที่ส่งมาจาก body ของ request - const { user_id, place_name, location, wheelchair_access, highway_type } = req.body; - - const newFavorite = await fav.create({ - user_id: user_id, - place_name: place_name, - location: location, - wheelchair_access: wheelchair_access, - highway_type: highway_type - }); - - res.status(201).json(newFavorite); // ส่งข้อมูลที่เพิ่มเข้าสู่ฐานข้อมูลกลับไปยัง client - } catch (err) { - return next(err); // หากเกิดข้อผิดพลาดในการสร้างข้อมูลใหม่ ส่งไปยัง error handling middleware - } -}); +const { getAllFavorites, + createFavorite, + getFavoritesByUserId } = require('../controllers/favController'); +router.route('/').get(getAllFavorites); +router.route('/:userId').get(getFavoritesByUserId); +router.route('/create').post(createFavorite); module.exports = router; diff --git a/server.js b/server.js index 9d1a20a..dbb7cdc 100644 --- a/server.js +++ b/server.js @@ -3,7 +3,7 @@ const app = express(); const cors = require('cors'); const dotenv = require("dotenv").config(); const connectDb = require('./config/dbConnection'); -const fav = require('./routes/favRoute'); +// const fav = require('./routes/favRoute'); app.use(express.json()); app.use(cors()); @@ -15,7 +15,7 @@ app.get('/', function(req, res) { }); }); -app.use('/favorites',fav); +app.use('/api/favorites', require('./routes/favRoute')); app.listen(process.env.PORT, () => { console.log(`server's running on port ${process.env.PORT}`);