작성
·
710
·
수정됨
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 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
0
카테고리별 음식점 조회는 selectRestaurants에 넘겨주는 category라는 파라미터를 통해 처리할 수 있습니다. 구체적으로는 selectRestaurants를 어떻게 구현해두셨는지 확인을 해야 알 수 있습니다. 코드를 첨부해주시면 상세히 도와드리겠습니다.
감사합니다.
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: "유효한 카테고리가 아닙니다.",
});
}
}
selecRestaurants가 두군데 있는데 indexController와 indexDao
indexController먼저 첨부합니다.
아래는 indexDao입니다.