2024. 5. 8. 16:31ㆍIT/Android
push - 참조 노드에 새로운 자식 노드를 생성하고, 생성된 자식 노드의 참조를 반환한다. 이때 생성된 노드의 키는 타임 스탬프를 기반으로 고유한 값이 배정되어 여러 사용자로부터 호출되어도 충돌이 발생하지 않는다.
ChildrenEventListener의 4가지 콜백
1. onChildAdded - 참조 노드를 포함한 자식 노드의 데이터를 처음 읽을 때 호출되거나, 새로운 자식 노드가 추가될 때마다 호출되는데, 리스너에 전달되는 DataSnapshot에는 생성된 자식 노드의 데이터가 포함된다.
2. onChildChanged - 참조 노드를 포함한 자식 노드의 데이터가 변경될 때마다 호출되고, 리스너에 전달되는 DataSnapshot에는 변경된 노드의 데이터가 포함된다.
3. onChildRemoved - 참조 노드를 포함한 자식 노드의 데이터가 삭제될 때마다 호출되고, 리스너에 전달되는 DataSnapshot에는 삭제된 노드의 데이터가 포함된다.
4. onChildMoved - 참조 노드를 포함한 자식 노드의 순서가 변경될 때마다 호출되고, 리스너에 전달되는 DataSnapshot에는 순서가 변경된 모든 노드의 데이터가 포함된다. (사실 확인 필요.)
ValueEventListener의 2가지 콜백
1. onDataChange - 참조 노드를 포함한 자식 노드의 데이터를 처음 읽을 때 호출되거나, 참조 노드를 포함한 자식 노드의 추가, 변경, 삭제가 이뤄질 때마다 호출된다. 리스너에 전달되는 DataSnapshot에는 참조 노드와 연결된 전체 노드가 포함되어 루프 처리를 통해 모든 노드의 데이터에 접근이 가능하다.
2. onCancelled - 네트워크, 권한 등으로 인해 데이터를 읽을 수 없으면 호출된다.
removeEventListener - 특정 노드에 삽입된 리스너를 삭제할 수 있는데, 이는 삽입된 리스너 객체와 동일한 객체를 인자로 전달해야 하며 참조된 해당 노드만 적용되지 자식 노드는 적용되지 않는다. 또, 해당 참조 노드에 다수의 같은 리스너를 삽입하고 이를 완전히 삭제하길 원한다면 삽입한 횟수만큼의 호출이 요구된다.
데이터 정렬 메서드 3가지 ( 프로그램 내의 쿼리 결과들이 정렬되는 것이지 원본 데이터 베이스의 순서는 변경되지 않는다. )
1. orderByChild - 자식 노드들이 공통으로 갖고 있는 키를 지정하여 자식 노드를 정렬하는데, 중첩된 하위 데이터를 설정할 수도 있다.
2. orderByKey - 자식 노드들의 키를 기준으로 자식 노드를 정렬한다.
3. orderByValue - 자식 노드들의 값을 기준으로 자식 노드를 정렬하는데, 만약 값이 존재하지 않는다면 무시된다.
orderByChild의 중첩된 하위 요소를 기준으로 자식 노드를 정렬하는 예시.
"posts": {
"ts-functions": {
"metrics": {
"views" : 1200000,
"likes" : 251000,
"shares": 1200,
},
"title" : "Why you should use TypeScript for writing Cloud Functions",
"author": "Doug",
},
"android-arch-3": {
"metrics": {
"views" : 900000,
"likes" : 117000,
"shares": 144,
},
"title" : "Using Android Architecture Components with Firebase Realtime Database (Part 3)",
"author": "Doug",
}
},
// Most viewed posts
val myMostViewedPostsQuery = databaseReference.child("posts")
.orderByChild("metrics/views")
myMostViewedPostsQuery.addChildEventListener(object : ChildEventListener {
// TODO: implement the ChildEventListener methods as documented above
// ...
})
데이터 필터링 메서드 7가지 ( 일반적으로 정렬 메서드와 함께 사용되지만 단독으로도 사용이 가능하다. )
1. limitToFirst - 시작부터 반환할 데이터의 최대 항목 수를 설정한다.
2. limitToLast - 마지막부터 반환할 데이터의 최대 항목 수를 설정한다.
3. startAt - 지정된 키 또는 값보다 크거나 같은 항목을 반환한다.
4. startAfter - 지정된 키 또는 값보다 큰 항목을 반환한다.
5. endAt - 지정된 키 또는 값보다 작거나 같은 항목을 반환한다.
6. endBefore - 지정된 키 또는 값보다 작은 항목을 반환한다.
7. equalTo - 지정된 키 또는 값과 같은 항목을 반환한다.
*반환 항목이 단 하나여도 리스트 타입으로 반환되기 때문에 루프로 접근이 가능하다.
limitToFirst, limitToLast를 사용하여 참조 노드의 리스너에 대한 콜백 함수 호출의 범위를 제한할 수 있다. 예를 들어, 아래의 코드는 "posts" 노드를 참조하고 limitToFirst(100)을 실행하는데 만약 여기에 addChildEventListener을 삽입했다면, onChildAdded 콜백 함수는 처음 100개의 자식 노드 아래의 자식 노드가 생성되는 경우에서만 호출된다.
databaseReference.child("posts").limitToFirst(100)
'IT > Android' 카테고리의 다른 글
Core areas/Permissions/Request app permissions/Request runtime permissions (0) | 2024.05.21 |
---|---|
Jetpack Compose - Swipe To Dismiss, Swipe to reveal with Realtime database (0) | 2024.05.14 |
Android - Firebase Realtime Database Read and Write (0) | 2024.05.07 |
Android - Firebase Realtime Database Structure (0) | 2024.05.07 |
App architecture/Dependency injection/Dependency injection with Hilt (0) | 2024.04.30 |