-
Notifications
You must be signed in to change notification settings - Fork 7
Week 5 firebase
JunBae edited this page Dec 6, 2019
·
5 revisions
- firebase 사이트로 가서 회원가입 후, 웹 프로젝트 생성한다.
- 프로젝트로 들어가서 'project overview'의 proejct settings로 이동한다.
- 앱이 없는경우 앱 추가하기를 한다.
- 일반의 내앱의 firebase SDK snippet탭의 CDN을 선택하여 스크립트를 복사한다
- 위에서 가져온 키를 아래와 같이 하나의 파일에서 관리하도록 한다.
//firebase.js
import * as firebase from "firebase"
import "firebase/database"//자신이 쓰려는 firebase기능을 추가한다.
let firebaseConfig ={
apiKey:
authDomain: ,
databaseURL: ,
projectId: ,
storageBucket: ,
messagingSenderId: ,
appId: ,
measurementId:
}
function Firebase() {
if (!firebase.apps.length) {//로딩 여부
firebase.initializeApp(firebaseConfig) //설정 초기화
}
firebase.analytics()
this.database = firebase.database()
//필요한 로직을 넣는다.
}
export default new Firebase()
- 이제 firebase를 적용할 프로젝트의 루트폴더에서 콘솔로 입력하여 firebase설정을 구성한다.
- 로그인
-
firebase login
으로 로그인을 한다.
- firebase 기능을 선택하여 설치
firebase init
- database를 스페이스바로 선택하고 enter로 다음으로 넘어간다.
- 'Please select an option'
-
Use an existing project
을 선택
-
-
Select a default Firebase project for this directory:
- 사이트에서 생성한 프로젝트를 선택
-
What file should be used for Database Rules?
- 자동으로 (database.rules.json)입력된것을 enter하여 넘겨준다.
- database.rules.json설정
{ "rules": { ".read": true, ".write": true } }
- 읽기, 쓰기를 true로 하여 읽고 쓰기가 가능하도록 한다.
import firebase from "./firebase"
...
firebase.database.ref(...)...//이런식으로 사용한다.
- 설정파일을 import하여 사용한다.
- messages/방번호/{text:내용,time:시간,userid:작성한사람}
- rooms/방번호/{사용자아이디:true,사용자아이디:true,recent:{text:내용}}
this.database.ref("경로")
- 한번 읽기
this.database.ref("경로").once("value").then(result =>{ result.val() })
- 리스너같이 변화를 감지하며 읽기
this.database.ref("경로").on("value",function(snapshot){ snapshot.val() })
- set함수로 해당 내용으로 덮어서 쓴다.
this.database.ref("경로").set({})
- push함수로 경로에 해당 내용을 추가한다.
this.database.ref("경로").push({})
-
orderByChild("키")
으로 키를 정렬하고, equalTo("값")으로 해당 키가 해당 키를 가진 부모 키를 찾아낸다.
this.database.ref("/rooms/")
.orderByChild("1").equalTo(true)
//query: room에서 1:true인것을 찾아라
- useEffect에서 리스너를 추가할경우 unsubscribe하도록 하여 리스너가 중첩되지 않게 한다.
UseEffect(()=>{
firebase.get().on("value", listener)
return () => firebase.get().off("value", listener)//unsubscribe
},[])
- 참고
- https://steemit.com/react-native/@rkzhap123/react-native-1
- https://www.youtube.com/watch?v=K_wZCW6wXIo
- https://firebase.google.com/docs/web/setup?authuser=0
- https://firebase.google.com/docs/database/web/start?authuser=0
- https://firebase.google.com/docs/database/web/read-and-write?authuser=0
- https://firebase.google.com/pricing/?hl=ko
부스트캠프 맴버십 - 그룹프로젝트 (서준배, 최성찬, 홍승표, 황선준)