반응형
Firebase 3.3 실시간 데이터베이스가 Resact Native 0.32로 "연결 시도 중"에 고착됨
방화기지@3.3.0
wifi를 사용하여 Android 장치에서 테스트한 v0.32를 리액터링함
Firebase 데이터베이스는 인증 규칙이 없고, 읽기 및 쓰기 권한이 있다.
다음 파일 구조로 지정됨:
|_ firebase.js
|_ actions.js
작동하지 않음:
방화 기지js
import firebase from 'firebase'
const config = {
apiKey: "*****",
authDomain: "****",
databaseURL: "*****",
storageBucket: "*****",
}
firebase.database.enableLogging(true);
export default firebase.initializeApp(config)
actions.js
import firebase from './firebase'
export const fetchData = () => {
const Data = firebase.database().ref('some/data')
Data.on('value', (snapshot) => {
console.log("snapshot", snapshot.val()) // never printed
}, (error) => {
console.error(error)
})
}
디버그 출력
p:0: Browser went online.
firebase-database.js:36 p:0: Listen called for /some/data default
firebase-database.js:36 p:0: Making a connection attempt
다른 건...
이것은 효과가 있지만 해결책은 아니다:
방화 기지js
...same content as above...
export default () => firebase.initializeApp(config) // we export a function instead to trigger the initialization when the app is ready
actions.js
...same content as above...
const Data = firebase().database().ref('some/data') // we "manually" trigger the initialization, it's obviously not a good solution since we can't initialize the app multiple times
생산량
p:0: Browser went online.
firebase-database.js:36 p:0: Listen called for /some/data default
firebase-database.js:36 p:0: Making a connection attempt
firebase-database.js:36 p:0: Auth token refreshed
firebase-database.js:36 getToken() completed. Creating connection.
firebase-database.js:36 c:0:0: Connection created
내가 여기서 뭘 잘못하고 있지? 나도 한번은 내가 잘못하고 있다는 것을 알아차렸다.import firebase from 'firebase'
그firebase
변수가 아닌 모든 파일에서 전역적으로 사용 가능firebase
수입 명세서로부터 var (내가 쓸 수 있었을 텐데)import FooBar from 'firebase'
그firebase
글로벌 var는 여전히 수입됨)
아무도 "공식적인" 대답을 하지 않는 것 같으니까.여기 내가 게으른 초기화를 제공하기 위해 가지고 온 해결책이 있다.
방화 기지js
import Firebase from 'firebase'
let _database = null
const initFirebase = () => {
var config = {
apiKey: "*************",
authDomain: "************",
databaseURL: "**********",
storageBucket: "************",
}
Firebase.database.enableLogging(true)
Firebase.initializeApp(config)
}
export const getDatabase = () => {
if (!_database) {
initFirebase()
_database = Firebase.database()
}
return _database
}
그럼, 네가 필요한 곳은 어디든database
:
import { getDatabase } from './firebase'
const methodThatNeedDatabase = () => {
getDatabase().ref('/some/ref')
...
}
반응형
'programing' 카테고리의 다른 글
목록이 비어 있는지 확인하는 방법 (0) | 2022.03.08 |
---|---|
vue-cli 프로젝트에서 포트 번호를 변경하는 방법 (0) | 2022.03.07 |
반응 16 : componentDidUpdate 경고: (0) | 2022.03.07 |
Vue Js - v-for X time(범위 내)을 통한 루프 (0) | 2022.03.07 |
VueJ에서 2개의 타사 구성 요소를 병합하는 방법 (0) | 2022.03.07 |