해결된 질문
작성
·
340
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형식으로 다음과 같이 보냈습니다.
__V가 생기는 원인과 post메서드로 보내었을때 저 속성이 안생기게 할수 있을까요?
추가적으로 sql을 사용 할 때는 모델을 생성 할 때 테이블 옵션을 사용해서 createdAt을 생성 할 수 있게끔 할 수있었는데
mongodb를 사용할 때에도 비슷한 방법으로 할 수 있나요?
답변 1
0
__v는 다큐먼트 버전을 의미합니다. 몽고디비는 버전 관리를 하기때문에 저기서 수정을 하면 버전이 1로 올라가는 등, 버전 관리 기능을 이용할 수 있습니다.
mongodb(정확히는 mongoose)에서도 timestamps: true 옵션이 있습니다.
굳이 없앨 필요는 없겠네요 감사합니다!