금일 달성 항목
1) main화면 ejs로 작성, 게시글 리스트 불러오기
문제 해결 과정 1 -음식점 리스트 불러오기
[문제]
백단에서 만든 음식점 api를 프론트로 가져와야하는데 방법을 모르는 상태였습니다.
[시도 및 해결]
튜터님과 동료들에게 물어봐서 해결하였습니다.
1. 모든 데이터를 조회하기 위해서는 전체조회 라우터가 필요하므로 추가해야합니다.
controllers
// 음식점 전체 조회
getAllRestaurant = async (req, res) => {
const { foodName, category } = req.query;
const { code, data } = await this.restaurantsService.getAllRestaurant(foodName, category);
res.status(code).json({ data });
};
service
// 음식점 전체 조회
getAllRestaurant = async (foodName, category) => {
try {
const getAll = await this.restaurantsRepository.getAllRestaurant(foodName);
return { code: 200, data: getAll };
} catch (error) {
return { code: 500, data: error.message };
}
repositories
getAllRestaurant = async (foodName, category) => {
// foodName search
if (foodName) {
return await Restaurant.findAll()
};
2.렌더 라우터 영역에 연결하는 데이터를 추가합니다.
// 음식점 전체 조회
router.get('/', async (req, res) => {
// /restaurants?foodName=오리지널 버거 콤보
const data = await restaurantsRepository.getAllRestaurant();
res.render('index', { data });
});
3. ejs에 해당 영역을 forEach로 돌려서 전체 리스트를 제공합니다.
<div class="cards">
<% data.forEach((restaurant, idx)=> { %>
<div class="restaurant-card">
<a href="/subpage/<%=restaurant.restaurant_id %>"><%= restaurant.restaurant_id %></a>
<span><%= restaurant.name %></span>
<span><%= restaurant.category %></span>
</div>
[알게된 점]
렌더 라우터를 통해 데이터를 뽑아내야하는 것을 알았고 console.log를 통해 데이터의 형태를 파악해서 뿌려주면 프론트 화면에 노출된다는 것을 알았습니다.
'혼자 고민해보기_ 개발 > TIL (Today I Learned)' 카테고리의 다른 글
20230720(금)_ 백오피스 프로젝트 (0) | 2023.07.22 |
---|---|
20230720(목)_ 백오피스 프로젝트 (0) | 2023.07.21 |
20230718(화)_ 백오피스 프로젝트 (1) | 2023.07.19 |
20230717(월)_ 백오피스 프로젝트 ERD 작성 (0) | 2023.07.19 |
20230714(금)_ 프로그래머스 공부, 뉴스피드 프로젝트 주석달기 (0) | 2023.07.14 |