본문 바로가기
프로그래밍/JavaScript

다른 라우터의 결과값이 불러와질때 해결법

by 물고기고기 2021. 4. 29.

오늘 해결한 문제인데 rest api를 사용해 개발을 하던중 이런식으로 url을 짜니까

/popularlist결과값이

// 상품상세보기
productRouter.get("/:id", async (req, res) => {
    try {
        const product = await Product.findOneAndUpdate({ _id: req.params["id"] }, { $inc: { views: 1 } }, { __v: 0 });
        res.json({ okay: true, result: product });
    } catch (error) {
        res.send({ okay: false });
    }
};);

// 실시간 인기상품 리스트
productRouter.get("/popularlist",async (req, res) => {
    const a = await Product.find({});
    console.log(a);
    try {
        const a = await Product.find({}).limit(3).sort("views");
        console.log(a);
        res.send({ result: a });
    } catch (error) {
        res.send({ result:"왜 다른라우터의결과값이나오나요?" });
    }
};);

인섬니아로 테스트해봤을때

이런식으로 /:id 값의 response값을 가져왔다. (/popularlist의 결과값은

res.send({ result:"왜 다른라우터의결과값이나오나요?" }); 가 나와야하는 상황입니다)

 

알고보니 인섬니아가 상품상세보기(/:id)라우터로 인해 popularlist를 /:id 파라미터로 생각해 실시간 인기상품리스트가 아닌 상품상세보기 url을 불러온듯하다.

 

해결방법

/:id로 파라미터값을 기준으로 불러올땐 앞에 detail/:id 이런식으로 다른 단어를 추가해 url을 restful하게 만들어야한다.

댓글