2016-08-17 94 views
1

我試圖設置一個反應原生項目與firebase,沒有太大的成功。配置數據從這裏獲取:https://console.firebase.google.com/project/my-project/overview,因此所有內容都會自動生成。從反應本機連接到firebase

這是我的設置代碼:

const config = { 
    apiKey: "[MY-API-KEY]", 
    authDomain: "[MY-AUTH-DOMAIN]", 
    databaseURL: "[MY-DATABASE-URL]", 
    storageBucket: "[MY-STORAGE-BUCKET]" 
} 

const firebaseApp = firebase.initializeApp(config); 
const usersRef = firebaseApp.database().ref('Users'); 

,後來,在某些時候,如果我嘗試運行此:

usersRef.set({ test: "sdfsdf" }); 

什麼也沒有發生在DB。我也無法從數據庫中獲取數據...

任何線索我在做什麼錯在這裏?

+0

用戶是否有權訪問數據庫?在新創建的項目中,只有經過身份驗證的用戶才能訪問,而且您沒有進行身份驗證。請參閱此頁面上的第一個藍色註釋:https://firebase.google.com/docs/database/web/retrieve-data –

+0

如果您在Android上運行,請嘗試禁用調試模式。在RN 0.31上運行時,FireBase有一些奇怪的問題。 – Xeijp

+0

謝謝。我將讀寫權限都改爲true,但仍然無法正常工作......據我所知,調試也被禁用。我需要以任何方式登錄或認證用戶嗎? – Luoruize

回答

1

從另一個文件導入我的database引用對象時,我遇到過類似的問題。基本上,當您在與執行onset方法的位置相同的文件中執行Firebase應用程序初始化時,可以工作。但是,一旦您嘗試從另一個文件中導入database,配置似乎會丟失......我認爲這與ReactNative如何捆綁javascript或類似的東西有關。下面是我來了一個解決辦法:

database.js

import * as Firebase from 'firebase' 

let HAS_INITIALIZED = false 

const initFirebase =() => { 
    if (!HAS_INITIALIZED) { 
     const config = { 
      apiKey: "**************", 
      authDomain: "************", 
      databaseURL: "*********", 
      storageBucket: "*********", 
     } 

     Firebase.database.enableLogging(true) 
     Firebase.initializeApp(config) 
     HAS_INITIALIZED = true 
    } 
} 

export const getDatabase =() => { 
    initFirebase() 
    return Firebase.database() 
} 

然後,在任何文件 - 您 - want.js

import { getDatabase } from './database' 

getDatabase().ref('...') // etc. 
-1

//複製上面的後代碼,我在App.js中寫下了以下代碼:

import React, { Component } from 'react'; 

import { 
Platform, 
StyleSheet, 
Text, 
View 
} from 'react-native'; 

import { getDatabase } from './database' 

getDatabase().ref().child('text').set('Hello'); 



export default class App extends Component<{}> { 
    render() { 
    return (
     <View> 

<Text>Welcome </Text> 
</View> 

); 

} 
} 

//the firebase show it