맛집목록 api조회
799
작성한 질문수 4
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
6분36초에 보면 한식카테고리만 검색했을 때 구이도 나오는 걸 확인 할 수 있습니다.
이후 편집과정에서 어떤 부분 수정하셔서 한식만 검색되었는지 알 수 있을까요?
강의 코드를 베끼고 있는데 카테고리 넣어서 조회해도 모든목록이 다나와버리고 있어서 ..
인덱스컨트롤러 코드 첨부합니다.
const { pool } = require("../../config/database");
const { logger } = require("../../config/winston");
const jwt = require("jsonwebtoken");
const secret = require("../../config/secret");
const indexDao = require("../dao/indexDao");
// 식당 조회
exports.readRestaurants = async function (req, res) {
const { category } = req.query;
// 카테고리 값이 넘어왔다면, 유효한 값인지 체크
if (category) {
const validCategory = [
"한식",
"중식",
"일식",
"양식",
"분식",
"구이",
"회/초밥",
"기타",
];
if (!validCategory.includes(category)) {
return res.send({
result: rows,
isSuccess: false,
code: 400, // 요청 실패시 400번대 코드
message: "유효한 카테고리가 아닙니다.",
});
}
}
try {
const connection = await pool.getConnection(async (conn) => conn);
try {
const [rows] = await indexDao.selectRestaurants(connection, category);
return res.send({
result: rows,
isSuccess: true,
code: 200, // 요청 실패시 400번대 코드
message: "식당 목록 요청 성공",
});
} catch (err) {
logger.error(`readRestaurants Query error\n: ${JSON.stringify(err)}`);
return false;
} finally {
connection.release();
}
} catch (err) {
logger.error(`readRestaurants DB Connection error\n: ${JSON.stringify(err)}`);
return false;
}
};

그리고 여기서 만들어 놓지 않은 카테고리를 입력하고 send를 누르면
could not get response라고 나오고
터미널에 에러가 뜹니다.
memilmooki@hanhyeonmug-ui-MacBookAir Node-Template-For-Food-Map-main % node index
.js
2023-01-18 14:00:25 info: undefined - API Server Start At Port 3000
/Users/memilmooki/Downloads/NODE-TEMPLATE-FOR-FOOD-MAP-MAIN/src/controllers/indexController.js:26
result: rows,
^
ReferenceError: rows is not defined
at exports.readRestaurants (/Users/memilmooki/Downloads/NODE-TEMPLATE-FOR-FOOD-MAP-MAIN/src/controllers/indexController.js:26:17)
at Layer.handle [as handle_request] (/Users/memilmooki/Downloads/NODE-TEMPLATE-FOR-FOOD-MAP-MAIN/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/memilmooki/Downloads/NODE-TEMPLATE-FOR-FOOD-MAP-MAIN/node_modules/express/lib/router/route.js:144:13)
at Route.dispatch (/Users/memilmooki/Downloads/NODE-TEMPLATE-FOR-FOOD-MAP-MAIN/node_modules/express/lib/router/route.js:114:3)
at Layer.handle [as handle_request] (/Users/memilmooki/Downloads/NODE-TEMPLATE-FOR-FOOD-MAP-MAIN/node_modules/express/lib/router/layer.js:95:5)
at /Users/memilmooki/Downloads/NODE-TEMPLATE-FOR-FOOD-MAP-MAIN/node_modules/express/lib/router/index.js:284:15
at Function.process_params (/Users/memilmooki/Downloads/NODE-TEMPLATE-FOR-FOOD-MAP-MAIN/node_modules/express/lib/router/index.js:346:12)
at next (/Users/memilmooki/Downloads/NODE-TEMPLATE-FOR-FOOD-MAP-MAIN/node_modules/express/lib/router/index.js:280:10)
at SendStream.error (/Users/memilmooki/Downloads/NODE-TEMPLATE-FOR-FOOD-MAP-MAIN/node_modules/serve-static/index.js:121:7)
at SendStream.emit (node:events:513:28)
Node.js v19.0.1
memilmooki@hanhyeonmug-ui-MacBookAir Node-Template-For-Food-Map-main %
답변 3
0
카테고리별 음식점 조회는 selectRestaurants에 넘겨주는 category라는 파라미터를 통해 처리할 수 있습니다. 구체적으로는 selectRestaurants를 어떻게 구현해두셨는지 확인을 해야 알 수 있습니다. 코드를 첨부해주시면 상세히 도와드리겠습니다.
감사합니다.
0
selecRestaurants가 두군데 있는데 indexController와 indexDao
indexController먼저 첨부합니다.
const { pool } = require("../../config/database");
const { logger } = require("../../config/winston");
const jwt = require("jsonwebtoken");
const secret = require("../../config/secret");
const indexDao = require("../dao/indexDao");
// 식당 조회
exports.readRestaurants = async function (req, res) {
const { category } = req.query;
// 카테고리 값이 넘어왔다면, 유효한 값인지 체크
if (category) {
const validCategory = [
"한식",
"중식",
"일식",
"양식",
"분식",
"구이",
"회/초밥",
"기타",
];
if (!validCategory.includes(category)) {
return res.send({
isSuccess: false,
code: 400, // 요청 실패시 400번대 코드
message: "유효한 카테고리가 아닙니다.",
});
};
}
try {
const connection = await pool.getConnection(async (conn) => conn);
try {
const [rows] = await indexDao.selectRestaurants(connection, category);
return res.send({
result: rows,
isSuccess: true,
code: 200, // 요청 실패시 400번대 코드
message: "식당 목록 요청 성공",
});
} catch (err) {
logger.error(`readRestaurants Query error\n: ${JSON.stringify(err)}`);
return false;
} finally {
connection.release();
}
} catch (err) {
logger.error(`readRestaurants DB Connection error\n: ${JSON.stringify(err)}`);
return false;
}
};
// 예시 코드
exports.example = async function (req, res) {
try {
const connection = await pool.getConnection(async (conn) => conn);
try {
const [rows] = await indexDao.exampleDao(connection);
return res.send({
result: rows,
isSuccess: true,
code: 200, // 요청 실패시 400번대 코드
message: "요청 성공",
});
} catch (err) {
logger.error(`example Query error\n: ${JSON.stringify(err)}`);
return false;
} finally {
connection.release();
}
} catch (err) {
logger.error(`example DB Connection error\n: ${JSON.stringify(err)}`);
return false;
}
};
아래는 indexDao입니다.
const { pool } = require("../../config/database");
exports.selectRestaurants = async function (connection, category) {
const selectAllRestaurantsQuery = `SELECT title, address, category, videoUrl FROM Restaurants where status = 'A';`;
const selectCategorizedRestaurantsQuery = `SELECT title, address, category, videoUrl FROM Restaurants where status ='A' and category = '?';`;
const Params = [category];
const Query = category
? selectAllRestaurantsQuery
: selectCategorizedRestaurantsQuery;
const rows = await connection.query(Query, Params);
return rows;
};
0
dao 에서 삼항연산자 결과가 반대로 되어야 합니다.
category가 존재한다면 카테고리가 포함된 결과를, 그렇지 않다면 전체를 보여줘야합니다.
const Query = category
? selectCategorizedRestaurantsQuery
: selectAllRestaurantsQuery;
0
안녕하세요.
존재하지 않는 카테고리 검색에 대한 에러 원인은 다음과 같습니다.
result에서 rows가 정의되기 전에 참조를 했기 때문입니다. rows는 db요청을 해서 가져오는 이 코드보다 아래에 존재하는 코드입니다.
if (!validCategory.includes(category)) {
return res.send({
result: rows,
isSuccess: false,
code: 400, // 요청 실패시 400번대 코드
message: "유효한 카테고리가 아닙니다.",
});
}
}
live server가 안 떠요..
0
79
1
카카오맵 API 가 안뜹니다...
0
673
2
카카오맵API 지도 관련
0
172
1
Putty에서 nginx를 vi로 수정할때 오류
0
279
3
mysql과 선생님의 깃허브 코드연결
0
183
1
nodemon 실행오류
0
229
2
Azure 서버로 구축하고 작업하는 방법 알 수 있을까요?
0
257
2
css 적용 중 강의대로 적용되지 않아 질문 드립니다
0
347
2
강의를 잘 활용하는 법 추천 부탁드립니다.
0
283
1
MysqlWorkbench 접속문제
0
299
1
전체 핀이 조회되지 않습니다.
0
258
1
빅데이터 처리관련
1
281
1
섹션5의 2번째 강의 질문-setMap 비동기 처리 이유
0
234
1
PM2 EADDRINUSE 에러
0
407
2
인스턴스 중단 후 재시작
0
278
1
이미지 부분에 cctv 영상을 넣고 싶은데요.
0
582
2
노션 링크가 어디있나요 ?
1
308
1
axios 이후 마커 오류
0
290
0
service nginx restart 에러
0
709
1
섹션10 배포하기 unbuntu에서 root경로가 안뜹니다ㅠㅠ
0
498
3
선생님 추가적으로 새로운 페이지를 만드려고 하는데요...
0
246
1
코드 질문 드립니다!
0
225
1
혹시 강의자료 노션 내리셨나요?
0
237
1
노드몬 에러 참조하세요
0
358
1





