• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

POST 메서드로 값을 넣어주고 몽구스 .create() 쿼리를 사용하면 컴퍼스에 __v 속성이 생성됩니다.

22.02.03 12:17 작성 조회수 230

0

제가 개인적으로 쇼핑몰 비슷한 프로젝트를 진행중인데 상품 데이터를 추가해주기 위해서 post로 받을 수 있게 라우터를 뚫어놓고 

req.body에 있는 데이터 들을 .create()를 사용해서 데이터를 추가할 수 있게 해주었습니다.

router.post("/", async (req, res, next) => {
    const { name, price, origin, type } = req.body;
    try {
        const products = await Product.create({
            name,
            price,
            origin,
            type,
        });
        res.send("값을 잘 받았습니다!");
    } catch (err) {
        console.error(err);
        next(err);
        res.send("값을 받지 못하였습니다.");
    }
});

 

상품데이터를 post로 받는것과 저의 mongodb 데이터베이스에 데이터를 넣는거 까지는 잘 됩니다. 그런데 컴퍼스를 확인해보니 제가 컴퍼스로 직접 넣은데이터와 post로 넣은 데이터가 차이가 존재합니다.

농구공은 제가 컴퍼스로 넣었고 덤밸은 post로 넣었습니다. 덤밸 데이터에 __V 속성이 0으로 존재합니다. 제가 postman프로그램으로 post요청을 보내었는데 json형식으로 다음과 같이 보냈습니다.

{
    "name""덤밸",
    "price": 25000,
    "origin""대만",
    "type""운동용품"
}

__V가 생기는 원인과 post메서드로 보내었을때 저 속성이 안생기게 할수 있을까요? 

추가적으로 sql을 사용 할 때는 모델을 생성 할 때 테이블 옵션을 사용해서 createdAt을 생성 할 수 있게끔 할 수있었는데

mongodb를 사용할 때에도 비슷한 방법으로 할 수 있나요?

답변 1

답변을 작성해보세요.

0

__v는 다큐먼트 버전을 의미합니다. 몽고디비는 버전 관리를 하기때문에 저기서 수정을 하면 버전이 1로 올라가는 등, 버전 관리 기능을 이용할 수 있습니다.

mongodb(정확히는 mongoose)에서도 timestamps: true 옵션이 있습니다.

이승훈님의 프로필

이승훈

질문자

2022.02.03

굳이 없앨 필요는 없겠네요 감사합니다!