분류 전체보기(222)
-
[이슈] 조건에 맞는 element 지우기
pull operatore를 사용한다. 이때 Document는 itemList:[{object}.... ] 의 형태로 구성되어있다. 따라서 내부 key를 이용해 조건을 찾으면, 해당 조건을 포함하고 있는 element가 빠진다. 이때 multi 옵션을 설정해주어야, 일치하는 모든 element를 제거할 수 있다. 종종 pullAll과 헷갈리는데, pullAll은 Document를 multi로 수정하는 것이 아니고, 조건에 해당하는 값만 빼내는 것이다. 예시의 경우 itemId만 pull된다.
2021.03.03 -
[정리] Apollo client 캐시(cache)사용
참고자료: 공식문서 및 아래 영상 www.youtube.com/watch?v=ou0fEW1eRjc&t=7081s 1. Apollo Client의 캐시와 Nomalization 아폴로 클라이언트를 상태관리에 사용하면 캐싱 처리에 대한 지원을 해준다. graphQL은 기본적으로 엔드포인트가 1개이기때문에 캐시 처리가 까다롭지만, 아폴로 클라이언트는 이러한 데이터의 redundancy들을 고려하여 예쁜 캐싱처리를 해준다. 캐싱된 데이터의 상세 내용은 아폴로 dev tool에서 확인할 수 있다. graphQL은 nested한 데이터를 가져오지만, 아폴로 클라이언트가 관리하는 캐시의 형태는 언제나 flat하다. 아폴로 클라이언트의 캐시를 사용하면, 서버에서 받아온 데이터를 flat한 형태로 바꾸어주는 normal..
2021.02.26 -
[이슈] MongoDB의 Transaction Limit Time
1분이다. 따라서 하나의 session객체에 포함된 트랜젝션들의 총 처리시간은 1분이 넘어가면 안된다. 멍청하게 aggregate를 포함한 많은 쿼리에 session을 공유하다가 계속 timeout 에러가 발생했다. 이러한 이슈에 대비하기 위해, 단순히 find해오는 쿼리에는 같은 session을 공유해주지 않는 것이 좋겠다. 물론 update한 데이터를 다시 find해와서 가공하는 경우는 적절하게 session을 분배해야 한다.
2021.02.26 -
[정리] MongoDB의 Transaction과 session문제
aggregate 쿼리에 session을 달아주지 않아 API가 서로 다른 트랜젝션에서 움직이는 문제가 생겼다. 기존 쿼리가 session객체를 쿼리 옵션에 실어서 주는 반면 aggregation은 전달하는 방법이 조금 다르다. option 메소드를 사용한다. 무튼 이건 그냥 실수. 중요한건 아니고. 트랜잭션은 논리적으로 하나의 작업으로 처리되는 쿼리들의 모음을 말한다 보통 commit과 rollback으로 나뉘어, 변경 후 상태를 유지하며 트랜잭션을 종료하거나, 이상이 있을 경우 이전 상태로 돌려놓은 후 트랜잭션을 종료한다 트랜잭션 과정에서는 '세션'이라는 개념을 사용하는데, 얘는 DB관련 작업을 수행 시작부터 종료까지의 기간을 말한다. 우리가 특정 쿼리를 DB에 보낸다면, DB 접속부터 수행한 후 쿼..
2021.02.25 -
[aggregate] project로 filter 하기
match 전에 사용해도 상관없다 이 예시의 경우는 result를 lookup의 결과물로 받아서, 결과물에 대한 filtering을 위해 dot command를 사용했다
2021.02.24 -
[이슈] 원하는 field만 가져오기
두번째 인자에 원하는 필드 지정해주기
2021.02.24