본문 바로가기

Flutter/Firebase

[Firebase] Firebase property 정리

Reference? Qurey? Snapshot?


다음과 같은 도표를 참고하면 쉽게 이해할 수 있다.

 

Firebase 도표

 

Collection


Collection에서는 크게 3가지 방향으로 갈린다.

 

1-1. Query

.orderBy(), where().. 을 통해서 Query를 만들고

.get()을 통해 서버통신으로 데이터를 가져온다. (.get()은 데이터를 한번만 가져오라는 Query이다)

 

=> Return 값은 QuerySnapshot

 

1-2. snapshot()

이 내용은 Real-time Read를 위한 Stream을 받아오는 함수이다.

 

=> Return 값은 Stream<QuerySnapshot> 이다.

 


1. QuerySnapshot => snapshot() 사용할 때 


Collection으로 부터 Query, snapshot을 통해 받아온 데이터 타입이다.

사실상 Snapshot은 비동기로 실제 서버 데이터를 가져온 내용물이다.

Collection으로 부터 특정 Doucment들을 가져왔기에 하나씩 까봐야한다.

 

1.1. docs

QuerySnapshot의 내부 데이터 리스트에 접근한다.

 

⇒ Return 값은 List<QueryDocumentSnapshot>이다.

 

2. QueryDocumentSnapshot => get() + docs 사용할 때


사실상 DocumentSnapshot과 같은 내용이다. DocumentSnapshot을 상속받았다.

왜 굳이 따로 만들었는지는 Class에 주석으로 친절하게 나와있다.
1. DocumentSnapshot과 다르게 항상 exists 가 true이다.
2. data()가 절대 null을 반환하지 않는다.

2.1. data()

실제 데이터가 들어있으며 Map<String, dynamic>형태로 넘어온다.

 

2.2. reference

Snapshot을 받아 올 수 있는 DocumentRefernce를 반환해준다.

QueryDocumentSnapshot은 기본적으로 DocumentSnapshot을 상속했기 때문에 똑같이 동작한다.


 

1-3. doc()

특정 documentId를 통해 단일의 document에 접근한다.

아직 서버 통신을 하는 상태는 아니고 접근할 document의 reference를 반환해준다.

 

=> Return 값은 DocumentReference 이다.


3. DocumentSnapshot -> doc(docid).get()


실제 Document의 데이터가 들어있는 객체이다.

3.1. data()

실제 데이터가 들어있으며 Map<String, dynamic>형태로 넘어온다.

실제 데이터를 받아올 수 있다.

 

3.2. reference

Snapshot을 받아 올 수 있는 DocumentRefernce를 반환해준다.

QueryDocumentSnapshot은 기본적으로 DocumentSnapshot을 상속했기 때문에 똑같이 동작한다.

 

3.3. data['Id']  -> Map 형태이므로 접근 가능.

각각의 변수들을 불러올 수 있다.

 

4. DocumentReference

DocumentReference에는 기본적인 동작들이 들어있다.


4.1. set( data )

document의 내용을 넘어온 data로 대체해버린다.

4.2. update( data )

data로 넘어온 특정 field의 값을 update한다.

4.3. delete( docId )

document를 삭제한다.

4.4. collection('collection_name')

내부 collection을 호출한다 혹은 생성한다.

4.5. get()

Future이다. 즉 서버통신을 통해 DocumentSnapshot() 데이터를 가져온다.