상품을 검색해서 가져오는 get요청의 restful api를 만들려고 하였다.
먼저 상품 관련한 라우터를 관리해줄 파일을 만들어주고
product.js
const express = require('express');
const router = express.Router();
const ctrl = require('./product.ctrl');
router.post('/detailInfo', ctrl.process.detailInfo);
router.post('/setProd', ctrl.process.saveProduct);
// router.patch('/edit', ctrl.process.edit);
router.get('/search', ctrl.process.search);
module.exports = router;
그 뒤 수행하는 컨트롤을 구현한 파일을 만들었다.
const bodyParser = require('body-parser');
const Product = require('../../models/Product');
const { response } = require('../../../app');
const process = {
detailInfo : async (req, res) => {
//상품 정보 db에서 가져와서 리턴
const product = new Product(req.body);
const response = await product.getProductData();
console.debug(response);
return res.status(200).json(response);
},
saveProduct : async (req, res) => {
//body로 받은 데이터 저장
const product = new Product(req.body);
const response = await product.setProductData();
return res.status(200).json(response);
},
// edit: async (req,res) =>{
// //body로 받은 데이터로 정보 수정
// },
search: async (req, res) =>{
//키워드 받아서 select like문
const encoded = req.query.keyword
const decoded = decodeURIComponent(encoded);
const product = new Product(decoded);
const result = await product.search();
console.log(result[0]);
return res.status(200).json(result);
}
}
module.exports = {
process,
};
get요청에서 url에 넣은 데이터가 인코딩되어 값이 들어와서
decodeURIComponet를 사용하면 다시 decode를 할 수 있었다.
그 뒤 Product객체를 만들고 Product내장 함수인 search를 이용하여 데이터베이스에서 검색을 진행하여
가져온 값인 배열을 result에 넣어주는 것이었다.
지금은 완성된 코드 이지만
수정하기 전인
search: async (req, res) =>{
//키워드 받아서 select like문
const encoded = req.query.keyword
const decoded = decodeURIComponent(encoded);
const product = new Product(decoded);
const result = product.search();
console.log(result[0]);
return res.status(200).json(result);
}
인 상태에서는
result[0] 값이 Promise { <pending> } 이 떴었다.
pending은

Promise에서 pending은 아직 아무것도 실행되지 않은 초기의 상태로서
pending이 떴다는 것은 실행결과를 받아오지 않았는데 비동기적으로 데이터를 받아서 발생한 것이다.
pending이 떴다면
async/await나 then을 사용하여 동기로직을 잘 살펴 보아야한다.
반응형
'Node.js' 카테고리의 다른 글
| 디스코드 봇 만들기 - 사용자가 음성 채널에 들어갔을때 (0) | 2024.11.14 |
|---|---|
| Node.JS base64로 인코딩한 이미지 incorrect 오류 (0) | 2023.11.07 |
| Node js cookie 설정시 option sameSite is invalid 오류 (0) | 2023.10.24 |
| Node js Connection Pool (4) | 2023.10.18 |
| JWT(json web token)으로 로그인시 토큰 발행 해주기(access, refresh) (0) | 2023.09.24 |