2016-08-17 152 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