:+: Code Summary :+:

  1. DB에 쓰기 [ firebase.database.Reference.set(), firebase.database.Reference.push() ]
    /* 1. set() 메소드 */
    firebase.database().ref('[키Refs]').set('[값]');
    // JSON으로 여러 값을 한번에 입력도 가능합니다
    firebase.database().ref('[키Refs]').set( {'[키]':'[값]', '[키]':'[값]', '[키]':'[값]', .. } );
    
    /* 2. push() 메소드 (자동으로 unique key를 만들어서 주입) */
    firebase.database().ref('[키Refs]').push([값]);
    // push key 사용 방법
    var messageListRef = firebase.database().ref('message_list');
    var newMessageRef = messageListRef.push();
    newMessageRef.set( {'user_id': 'ada', 'text': 'The Analytical Engine...'} );
    
  2. DB에서 삭제 [ firebase.database.Reference.remove() ]
    /* firebase.database.Reference.remove() */
    firebase.database().ref('[키Refs]').remove();
    
  3. DB에 업데이트 [ firebase.database.Reference.update() ]
    /* firebase.database.Reference.update() */
    firebase.database().ref('[키Refs]').update( {'[키]':'[값]', '[키]':'[값]', '[키]':'[값]', .. } );
    
  4. DB에서 한번만 읽기 [ firebase.database.Reference.once() ]
    /* firebase.database.Reference.once() */
    firebase.database().ref('[키Refs]').once('[값]').then(function(snapshot) {
      // console.log( snapshot.val() );
    });
    
  5. DB에서 변화 감지 [ firebase.database.Reference.on() ]
    /* value : 모든 데이터 변화 감지 */
    var starCountRef = firebase.database().ref('posts/' + postId + '/starCount');
    starCountRef.on('value', function(snapshot) {
      updateStarCount(postElement, snapshot.val());
    });
    
    var commentsRef = firebase.database().ref('post-comments/' + postId);
    /* child_added : 자식 노드가 추가됨을 감지 */
    commentsRef.on('child_added', function(data) {
      addCommentElement(postElement, data.key, data.val().text, data.val().author);
    });
    /* child_added : 자식 노드의 값이 변화를 감지 */
    commentsRef.on('child_changed', function(data) {
      setCommentValues(postElement, data.key, data.val().text, data.val().author);
    });
    /* child_removed : 자식 노드의 위치 변화를 감지 (미리 정렬 되어 있어야 함) */
    commentsRef.on('child_removed', function(data) {
      deleteComment(postElement, data.key);
    });
    
  6. 데이터 객체 [ DataSnapshot ]
    /* 데이터의 예 */
    {
      "users": {
        "ada": {
          "first": "Ada",
          "last": "Lovelace"
        },
        "alan": {
          "first": "Alan",
          "last": "Turing"
        }
      }
    }
    
    /* forEach() 메소드 사용의 예 */
    var query = firebase.database().ref("users").orderByKey();
    query.once("value")
      .then(function(snapshot) {
        snapshot.forEach(function(childSnapshot) {
          var key = childSnapshot.key;
          var childData = childSnapshot.val();
      });
    });
    
  7. 정렬
    1. orderByChild()
    2. orderByKey()
    3. orderByValue()
  8. 필터링
    1. limitToFirst()
    2. limitToLast()
    3. startAt()
    4. endAt()
    5. equalTo()
  9. 타임 스템프 [ firebase.database.ServerValue.TIMESTAMP ]
    // 단독으로 사용은 불가능하고 DB에 값을 넣을때만 사용 가능
    firebase.database().ref("접속시간").set( firebase.database.ServerValue.TIMESTAMP );
    
  10. 접속 끊김 감지 [ firebase.database.OnDisconnect ]
    // 서버에서 리스너가 장착되고 뒤에 수행할 메소드를 덧붙이는 방식
    firebase.database().ref("접속종료").onDisconnect().set( firebase.database.ServerValue.TIMESTAMP );
    
    
  11. SQL 변환의 예

:+: Study Slide :+:

A. 기본적인 DATABASE

  1. 데이터베이스 사용법 Step1 (firebase SDK 링크)
  2. 데이터베이스 사용법 Step2 (구글 인증 넣기)
  3. 데이터베이스 사용법 Step3 (DB 데이터 쓰기)
  4. 데이터베이스 사용법 Step4 (DB 데이터 읽어오기)
  5. 데이터베이스 사용법 Step5 (DB 데이터 갱신)
  6. 데이터베이스 사용법 Step6 (DB 데이터 리스닝)

B. 실시간 접속자 웹앱 만들기

  1. 실시간 접속자 웹앱 만들기 Step1 (SDK 링크 + 구글인증)
  2. 실시간 접속자 웹앱 만들기 Step2 (인증 상태 감지)
  3. 실시간 접속자 웹앱 만들기 Step3 (접속 상태 기록하기)
  4. 실시간 접속자 웹앱 만들기 Step4 (접속 상태 감지하기)
  5. 실시간 접속자 웹앱 만들기 Step5 (접속자 목록 보여주기)
  6. 실시간 접속자 웹앱 만들기 Step6 (페이지 이탈시 상태 변경)
  7. 실시간 접속자 웹앱 만들기 Step7 (접속 해제시 상태 변경)