티스토리 뷰
📌2020 07 11
-
MySql -> NoSql 데이터 베이스 변경 , 개인프로젝트이기 때문에 몽고DB가 더 적절하다고 판단함
-
수업에서는 한명의 User당 Order 데이터를 여러개 생성했는데, 이럴경우 Order에 들어간 아이템들이 무의미하게 겹쳐질 수 있겠다 생각함, 따라서 한명의 User당 하나의 Order데이터만 갖고 Order에 들어갈 아이템 리스트를 Object Array로 변경하여 Order 데이터에 Embeded함.
추후에 유저 한명 당 여러개의 Order를 생성해야하는 경우에는 이전 방식으로 다시 돌아가도록! -
기존의 Order에는 아이템의 정보를 Embeded 했지만, products와 order의 관계가 다대다(Many to Many) 관계라고 판단하여 Products를 참조(ref)하도록 함. 해당 Order데이터에는 product의 id만 저장하고, getOrder 라우팅에서 populate를 이용해 해당 아이템의 정보를 추출하는 방향으로 바꿈.
-
몽고 DB 스키마 설계를 더 공부하자!
변경 전 Order Model
product에 해당 아이템의 모든 정보가 담기고 하나의 유저가 여러개의 Order 스키마를 가질 수 있다.
const orderSchema = new Schema({
products:[{
product : {type: Object, required:true},
quantity: {type: Number, required:true}
}]
,user:{
userid:{
type:Schema.Types.ObjectId,
ref:'User',
required:true
},
name:{
type:String,
required:true
}
}
})
변경 후 Order Model
products.item.productId에 해당 아이템의 ref값이 담기고 유저 당 한개의 Order 스키마만 가질 수 있다.
const OrderSchema = new Schema({
products: {
items:[
{
productId:{
type:Schema.Types.ObjectId,
ref:'Product',
required:true
},
quantity:{
type:Number,
required:true
}
}
]
}
,user:{
userId:{
type:Schema.Types.ObjectId,
ref:'User',
required:true
},
name:{
type:String,
required:true}
}
});
'Project > 첫번째 프로젝트 쇼핑몰 웹' 카테고리의 다른 글
[ node js - express 쇼핑몰 웹] 6. Cart 와 Order 수량 변경 기능 구현 / Cart 내에서 체크한 항목만 Order하는 기능 구현 (0) | 2020.07.22 |
---|---|
[ node js - express 쇼핑몰 웹] 5. Seller 등록, 취소 구현 (0) | 2020.07.22 |
[ node js - express 쇼핑몰 웹 ] 4. input data validation 추가 (0) | 2020.07.19 |
[node js - express 쇼핑몰 웹] 3. 로그인, 로그아웃, 회원가입 구현하기 (0) | 2020.07.16 |
[node js - express 쇼핑몰 웹] 2. 삭제된 product 정보 cart와 order에 적용시키기 (0) | 2020.07.15 |
댓글