blackturtle2 / QuoteDev

개발자명언: 하루 한번씩 개발자 명언! 앱 (iOS) ( #Widget #Board #Firebase )

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

재성 - Firebase에 Append 같은 명령?이 있는지 알아보기

blackturtle2 opened this issue · comments

어제 갑자기 맥북 재부팅 후에, 맥에서 한국어가 사라지면서 한국어 타이핑이 안되는 버그가 나타나서.. 어찌어찌 극복해보려고 했는데..
결국 하이 시에라 재설치로 극복했습니다..
그래서 하루 날림...... OTL

  1. 기수가 파이어베이스에 Array가 없다고 했던 이야기를 하는 파이어베이스 공식 블로그

The Firebase Blog/ Best Practices/ Arrays in Firebase
https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html

  1. 위와 관련한 괜찮은 미디엄 글

Best Practices for Firebase Realtime Database Development
https://medium.com/@CodeAndBiscuits/best-practices-for-firebase-realtime-database-development-14e8fd133d44

  1. 파이어베이스 데이터 읽고 쓰기의 파이어베이스 공식 레퍼런스

iOS에서 데이터 목록 다루기  |  Firebase
https://firebase.google.com/docs/database/ios/lists-of-data?hl=ko

// 기수가 카톡으로 넘겨준 블로그 글

웬스의 Log("일상", "공부", "관심사", "기타등")
https://ven2s.github.io

하면서도 느끼지만 파베는 정말좋으면서도 알면 알수록 어렵고 신기한거 같아욬ㅋㅋ

프로젝트 복귀 선언.
집을 22년 만에 이사하니, 이것저것 가구도 사고 조립하고 등등등.
서울로 두어번 올라오면서 완전 촌동네에 오기는 했구나 하면서 우울해하고 있는 요즘입니당.
여튼, 이사니 뭐니, 개인적인 일로 프로젝트 작업 미뤄더서 미안합니다. 🙏


이 스터디 이슈는 클로즈하기 위해 정리를 해봅니다.
역시 공식 문서를 제대로 정독하고 리서치를 해야..

기본 중에 기본 - 데이터 읽고 쓰기

// 출처1: https://firebase.google.com/docs/database/ios/read-and-write?hl=ko

데이터 읽기

observeEventType: 데이터 수신 대기로 읽기.
observeSingleEventOfType: 데이터 한번만 읽기.

데이터 쓰기

self.ref.child("users").child(user.uid).setValue(["username": username]): 하위 노드의 전체 데이터 쓰기.
self.ref.child("users/(user.uid)/username").setValue(username): 하위 항목만 업데이트하기.

공식 문서의 데이터 쓰기 노하우

let key = ref.child("posts").childByAutoId().key
let post = ["uid": userID,
            "author": username,
            "title": title,
            "body": body]
let childUpdates = ["/posts/\(key)": post,
                    "/user-posts/\(userID)/\(key)/": post]
ref.updateChildValues(childUpdates)

리스너 분리

관찰자는 ViewController에서 벗어날 때 데이터 동기화를 자동으로 중지하지 않습니다. 관찰자를 적절히 삭제하지 않으면 데이터가 계속 로컬 메모리에 동기화됩니다. 관찰자가 더 이상 필요하지 않은 경우 removeObserverWithHandle 메소드에 해당 FIRDatabaseHandle을 전달하여 삭제하세요.

데이터 목록 다루기

// 출처2: https://firebase.google.com/docs/database/ios/lists-of-data?hl=ko

데이터 추가

childByAutoId: 지정된 Firebase 참조에 새 하위 항목이 추가될 때마다 고유 키를 생성. ( childByAutoId가 생성하는 고유 키는 타임스탬프에 기초하므로 목록 항목은 시간순으로 자동 정렬됩니다. )

데이터 정렬

FIRDatabaseQuery를 사용한다.
queryOrderedByKey: 하위 키에 따라 결과를 정렬합니다.
queryOrderedByValue: 하위 값에 따라 결과를 정렬합니다.
queryOrderedByChild: 지정된 하위 키의 값에 따라 결과를 정렬합니다.

// 평점에 따라 사용자 글을 정렬화하는 예제 코드

let myTopPostsQuery = (ref.child("user-posts").child(getUid())).queryOrdered(byChild: "starCount")

데이터 필터링

queryLimitedToFirst: 정렬된 결과 목록에서 맨 처음부터 반환할 최대 항목 개수를 설정합니다.
queryLimitedToLast: 정렬된 결과 목록에서 맨 끝부터 반환할 최대 항목 개수를 설정합니다.
queryStartingAtValue: 선택한 정렬 기준 메소드에 따라 지정된 키 또는 값보다 크거나 같은 항목을 반환합니다.
queryEndingAtValue: 선택한 정렬 기준 메소드에 따라 지정된 키 또는 값보다 작거나 같은 항목을 반환합니다.
queryEqualToValue: 선택한 정렬 기준 메소드에 따라 지정된 키 또는 값과 동일한 항목을 반환합니다.

// 2017.11.30 22:20: QuoteDev 프로젝트가 이재성 개인 프로젝트로 전환되어 모든 이슈를 Close 합니다.