TIL. 10 get_or_create

Hoontae.KIM·2021년 8월 14일
0
post-thumbnail

get_or_create 메서드

프로젝트기간 장바구니 추가를 구현 하는 상황에서 create 메서드를 사용하여 추가하였는데 멘토분께서 get_or_create를 공부하여 사용해보라는 리뷰를 달아주셨다.
get_or_create는 object,created로 이루어져있고 object는 꺼내려 하는 인자이고 createdTrue, False로 이루어져있어서 db에없어 생성이되었다면 True로 기존에 데이터가 있다면 추가되지않고 Falsed이다. 하지만 장바구니에 기존데이터가 있으면 그대로 추가되는 조건을 걸었다.

메서드 이해 X

위 cart라는 object에 db를 추가하기 위해서 product, user, quauntity를 키워드를 입력하였다. 그리고 postman으로 테스트를 하였을 때 새롭게 추가하고자하는 값을 db에 create했을 때 db에 추가가 되었고 한번 더 추가를 했을때도 무리 없이 추가가되었다. 하지만 3번째 추가를 할 때, ADD_SUCCESS가 아닌 SUCCESS라는 메세지가 나와서 뭔가 잘못됬다는것을 느꼈다. 그리고 db를 확인하니 아래와 같이 추가되는것이아닌 새로운 db가 생성되어있었다.
*추가시키고자 한 값 : product = 17, user = 1, quantity = 1

메서드 이해 O

무엇이 잘못된건지 고민하다가 quantity를 키워드로 걸면 안된다는 생각이 들었다.
추가하고자 하는 값이 없을때 새로운 db를 추가 하였고 추가된 quantity의 값이 있을때 기존값에 더하여 추가가 되었다. 하지만 quantity가 2가 되었고 1을 추가하려했지만 기존 db에 위 이미지를 보면 quantity = 1, product_id = 17, user_id = 1 이라는 db가 없었기에 새롭게 추가가 된 것 이었다.

코드를 다시 수정하였고 더 공부한 결과 defalts값을 설정 할 수 있다는 것을 알게되었다. 값을 설정할 수 있다는 것을 몰랐더라면 모델링을 수정해야했기에 번거로움이 있을 뻔 하여서 다행이었다. defalts값을 설정할때 quantity가 기존 db의 quantity 값을 를 참조하게하여 stock이 있는 한 추가되게 코드를 수정하였다.

하지만 코드를 수정하여 값을 추가하였을때 여러 에러메세지가 나왔고 그중 return 2 라는 리턴하는 값이 두개라는 듯한 에러 메세지가 나와서 위 이미지의 2개의 중복되는값의 db가 있기에 에러가 발생한 듯한 느낌이와서 하나의 db를 delete한 결과 quantity가 추가되는 것에 대한 에러는 발생하지않고 잘 진행된다는 것을 알 수 있게 되었다. 이번을 계기로 여러가지 메서드를 사용하기 위해서는 정확한 조건이 무엇인지 어떻게 사용되는지 파악하고 이용해야한다는 걸 다시 한 번 깨닳게 되었다.

profile
💻 STUDY RECORD

0개의 댓글