Week3) Order API 만들기

growleb·2022년 3월 5일

데이터 조회

EventStore.doc(eventId).collection()으로 콜렉션에 접근, get()으로 콜렉션에 있는 내용을 모두 끌어온다.
이후 docs.map()으로 끌어온 내용의 값을 쭉 순회하며 데이터(array)로 만든다.

단, 매번 DB까지 접근해 콜렉션을 읽는 것은 비용이 많이 든다.
redis로 한 번 걸러주면 좋지만, 개인 프로젝트니까….
세션에서는 Mapkey를 넣어 캐시처럼 사용하도록 했다.

데이터 추가

트랜잭션(Transaction)

파이어베이스에서 쓸 수 있는 1개 이상의 문서에 대한 읽기, 쓰기 작업의 집합이다.
공식문서(트랜잭션 및 일괄 쓰기)를 참고하면 좋을 것 같다.

변화점들을 한 번에 롤백할 수 있도록 사용한다고….
세션에서도 문서에 대한 레퍼런스만 가리킨 다음 트랜잭션 내에서 문서 존재 여부, 닫힘 여부, 마지막 주문 등을 확인했다.

트랜잭션 사용에서 참고해야 할 부분은 다음과 같다. (공식 문서 인용)

  • 읽기 작업은 쓰기 작업 전에 이루어져야 합니다.
  • 트랜잭션에서 읽는 문서에서 동시에 수정이 이뤄지는 경우 트랜잭션을 호출하는 함수(트랜잭션 함수)가 여러 번 실행될 수 있습니다.
  • 트랜잭션 함수가 애플리케이션 상태를 직접 수정하면 안 됩니다.
  • 클라이언트가 오프라인 상태면 트랜잭션이 실패합니다.
addOrder

이벤트를 특정하는 id을 포함한 데이터를 set()한다.

profile
매일매일 성장하는 개발자 :)

0개의 댓글