Firebase 배우기 9 – Firestore DB 등록 자료에 자동순번 카운터 추가하기

Firebase 배우기 9 – Firestore DB 등록 자료에 자동순번  카운터 추가하기

앞선 글에서 Firestore의 컬렉션(=DB)에 자료를 업로드하는 것과, 관련 사진 등의 파일 자료를 올리는 방법을 소개했었다.

https://blog.naver.com/mythee1/223493076303

그런데, 이렇게 자료를 등록한 자료에는 일련번호가 없기 때문에, 자료를 읽어오거나 컬렉션 내에서의 자료 순서를 찾아보기 어려운 측면이 있다. 때문에 컬렉션에 자료를 등록할 때 자동으로 일련번호가 추가되었으면 하는 바람이 생기게 된다. 그렇지만 Firestore Database 자체로는 자동 카운터 기능이 없기 때문에, 간접적인 방법을 이용하여 구현하여야 한다.

본 글에서는 컬렉션에 자료가 등록될 때마다, 등록번호를 별도의 DB 자료에서 읽어와 사용하고, 해당 DB에는 증가된 번호를 수정해 저장하는 간접적인 방식으로 이를 구현하는 과정을 자세히 소개한다.

우선 Firestore 내에 숫자를 세거나 저장하기 위한 별도의 컬렉션(=DB)를 하나 만들어준다.

나는 이 컬렉션(=DB)의 이름을 counterDB라고 붙이고,

상품 자료를 등록할 때 일련번호 값을 저장하는 하나의 문서(=record)를 만들어 counter라고 문서 이름을 정했다. 그리고, 이 문서에 “상품 등록번호”라는 필드를 만들고, 초깃값으로 1을 정수형으로 지정해 주었다. (초깃값은 자신이 원하는 대로 정해주면 된다.)

이렇게 counterDB가 만들어지면 하나의 레코드 문서가 포함된 컬렉션이 되는데,

상품을 DB에 등록하는 코드에서는 다음과 같은 형식의 코드를 이용하여, 이 상품 등록번호 값을 읽어오는데,

다음과 같이 읽은 값을 다른 자료들과 함께, 상품 등록 컬렉션에 함께 저장하면 된다.

그리고, 기존 counterDB에서 읽어온 값은 1을 증가시켜 다시 대체하여 저장해 주어야 하는데,

이 과정에서 상품 자료의 등록이 완전히 성공적으로 완료된 후에 등록이 완료되도록, Loop 구조를 만들어주어야 하는 점에 신경 써야 한다.

이렇게 자동 증가 카운터를 이용하면 등록된 자료들에 다음과 같이 상품 등록번호 필드가 추가되며, 이를 이용한 문서(=record) 정렬 및 레코드 번호(doc.id) 대체 용도로도 사용할 수 있게 된다.