開始寫之後發現跟一開始預設的有一點點出入,因為有階層的關係,所以查詢時要帶入上層的ID才能正確拿到全部,不然會拿到別人家具。
以下是開發完的API名稱,但這次30天內會用到的應該只會有家具跟收納資料的 API:
大概就是這樣的內容,小調整再換個名稱重複寫5遍
import express, { Request, Response, Router } from 'express';
import StorageItem from './storage-item.model';
import { sendErrorResponse, sendSuccessResponse } from '../common/interface/api-response.interface'; // 假設你有相同的回應格式
const router: Router = express.Router();
/** 取得家具中的所有收納資料 */
router.get('/****/:furnitureId', async (req: Request<{ furnitureId: string }>, res: any) => {
try {
const storageItems = await StorageItem.find({ furnitureId: req.params.furnitureId }); // 查詢所有收納資料
console.log('req', req);
if (storageItems.length === 0) {
return sendErrorResponse(res, 404, 'Not found', 'No storage items found for this furniture');
}
sendSuccessResponse(res, 200, storageItems, { message: 'Storage items retrieved successfully' });
} catch (error: any) {
sendErrorResponse(res, 500, 'Server error', error.message);
}
});
/** 取得指定的收納資料 */
router.get('/****/:id', async (req: Request<{ id: string }>, res: any) => {
try {
const storageItem = await StorageItem.findById(req.params.id); // 透過 ID 查詢特定收納資料
if (!storageItem) {
return sendErrorResponse(res, 404, 'Not found', 'Storage item not found');
}
sendSuccessResponse(res, 200, storageItem, { message: 'Storage item retrieved successfully' });
} catch (error: any) {
sendErrorResponse(res, 500, 'Server error', error.message);
}
});
/** 新增收納資料 */
router.post('/****', async (req: Request, res: Response) => {
try {
const storageItemData: Partial<typeof StorageItem> = req.body; // 從請求中取得新增的收納資料
const newStorageItem = await StorageItem.create(storageItemData); // 新增收納資料
sendSuccessResponse(res, 200, newStorageItem, { message: 'Storage item added successfully' });
} catch (error: any) {
sendErrorResponse(res, 500, 'Server error', error.message);
}
});
/** 修改指定的收納資料 */
router.put('/****/:id', async (req: Request<{ id: string }>, res: any) => {
try {
const storageItemData = req.body; // 從請求中取得要更新的資料
const updatedStorageItem = await StorageItem.findByIdAndUpdate(req.params.id, storageItemData, { new: true }); // 更新資料並返回更新後的結果
if (!updatedStorageItem) {
return sendErrorResponse(res, 404, 'Not found', 'Storage item not found');
}
sendSuccessResponse(res, 200, updatedStorageItem, { message: 'Storage item updated successfully' });
} catch (error: any) {
sendErrorResponse(res, 500, 'Server error', error.message);
}
});
/** 刪除指定的收納資料 */
router.delete('/****/:id', async (req: Request<{ id: string }>, res: any) => {
try {
const deletedStorageItem = await StorageItem.findByIdAndDelete(req.params.id); // 根據 ID 刪除收納資料
if (!deletedStorageItem) {
return sendErrorResponse(res, 404, 'Not found', 'Storage item not found');
}
sendSuccessResponse(res, 200, deletedStorageItem, { message: 'Storage item deleted successfully' });
} catch (error: any) {
sendErrorResponse(res, 500, 'Server error', error.message);
}
});
// 匯出路由
export default router;