firebase 단순 예제 좋은게 없어서 찾다가 문서보고 하나 짰다.
https://console.firebase.google.com 에서 본 Database 구조가 위와 같을 때
firebase 패키지는 하위에 database() 를 통해 데이터베이스 접근이 가능하고 실제 데이터가 있는 노드는 ref('parent/child/child/child....') 와 같이 XPath 형식으로 찾아갈 수 있다.
데이터를 읽기 위해선 .on 으로 이벤트를 붙여서 해당 ref의 자식들을 추가(child_added), 삭제(child_deleted), 수정(child_changed),이동(child_moved)를 감지하여 callback으로 해당 객체를 반환한다.
별다른 조건이 없다면 최초에 child_added를 감시하면 해당 node의 모든 값을 가져온다.
이는 mongodb+meteor 조합인 경우의 observe(https://docs.meteor.com/api/collections.html#Mongo-Cursor-observe)랑 비슷하다.
반면 쓰기의 경우는 간단한데 해당 ref에서 set/update하여 오브젝트를 변경하거나 push로 하위에 유니크한 키를 갖는 복수개의 오보젝트를 추가할 수 있다.
push에서 생성한 key는 on 에서 인자값의 .key 프로퍼티를 통해 접근할 수 있다.
update는 변경된 부분만 덮어쓰지만 set은 아예 해당 하위트리를 재정의 하므로 주의깊게 사용하자.
흔한 Firebase 자료구조.png
config =요정도면 읽고 쓰고가 가능.
apiKey: '<<<<<<<<<>>>>>>>>>>'
authDomain: '<<<<<<<<<>>>>>>>>>>'
databaseURL: '<<<<<<<<<>>>>>>>>>>'
projectId: '<<<<<<<<<>>>>>>>>>>'
storageBucket: '<<<<<<<<<>>>>>>>>>>'
messagingSenderId: '<<<<<<<<<>>>>>>>>>>'
firebase.initializeApp config
ref = firebase.database().ref('rooms/muka/messages') # database 경로
ref.on 'child_added', (o) ->
# key:0. val();"text":"블라블라"
# key:1. val();"text":"블라블라"
console.log JSON.stringify Object.assign key: o.key, o.val()
sendMessage = (message) ->
ref.push
text: message.text
date: (new Date()).toISOString()
firebase 패키지는 하위에 database() 를 통해 데이터베이스 접근이 가능하고 실제 데이터가 있는 노드는 ref('parent/child/child/child....') 와 같이 XPath 형식으로 찾아갈 수 있다.
데이터를 읽기 위해선 .on 으로 이벤트를 붙여서 해당 ref의 자식들을 추가(child_added), 삭제(child_deleted), 수정(child_changed),이동(child_moved)를 감지하여 callback으로 해당 객체를 반환한다.
별다른 조건이 없다면 최초에 child_added를 감시하면 해당 node의 모든 값을 가져온다.
이는 mongodb+meteor 조합인 경우의 observe(https://docs.meteor.com/api/collections.html#Mongo-Cursor-observe)랑 비슷하다.
반면 쓰기의 경우는 간단한데 해당 ref에서 set/update하여 오브젝트를 변경하거나 push로 하위에 유니크한 키를 갖는 복수개의 오보젝트를 추가할 수 있다.
push에서 생성한 key는 on 에서 인자값의 .key 프로퍼티를 통해 접근할 수 있다.
update는 변경된 부분만 덮어쓰지만 set은 아예 해당 하위트리를 재정의 하므로 주의깊게 사용하자.
댓글
댓글 쓰기