无法通过本机应用程序将数据推送到firebase数据库

时间:2018-01-17 09:22:19

标签: firebase react-native firebase-realtime-database

我一直在尝试使用firebase并成功实现了身份验证apis。但我无法将数据推送到firbase数据库。 这是我的代码:

//import firebase from '../../firebase/firebase';
 import * as firebase from 'firebase';

 export default class Home extends React.Component {
   onAddPressed() {
    var p = firebase.database().ref().push().set({
        title: "Hello World!",
        author: "Simon",
        location: "Germany",
        city: "Muenster",
        state: "Germany",
        zip: 48155
    });
    console.log(p);
    p.then(function () {
        console.log("success")
        }, function () {
        console.log('rejected promise')
    }).catch((e) => console.log(e))
}

 render(){
   return (
        <View>
            <Text>This is Home</Text>

            <TouchableOpacity
                onPress={this.onAddPressed.bind(this)}>
                <Text> add User  </Text>
            </TouchableOpacity>
        </View>
    );
  }

当我点击Text时,会返回Promise P,但它永远不会被解析或拒绝。所以基本上没有任何反应(也没有错误)。 我究竟做错了什么?

Q2。我应该从哪里导入firebase?有两种选择:

1。 import * as firebase from 'firebase';

2。 import firebase from '../../firebase/firebase(我的单身类)

修改 我的数据库规则如下:

 {
  "rules": {
  ".read": "auth == null",
  ".write": "auth == null"
 }
}

我已经创建了一个单独的firebase类,我已经初始化了我的firebase

firebase.initializeApp(config);
export default firebase;

调试后我知道当我执行以下操作时,firebase未定义。

firebase
.database()
.ref("list/")
.push({
  title: "Title",
  createAt: new Date().toString()
});

1 个答案:

答案 0 :(得分:0)

如果没有明确定义的问题,很难说出确切的解决方案。您是否已在app中初始化了firebase,或者 RULES 是否已设置为公开?

尝试使用以下代码来测试firebase,如果它的工作原理,那么您可以根据需要修改此代码。它在我的案例中工作。不要忘记将您的数据库 RULES 设置为公开,以便进行测试

import * as firebase from "firebase";

const config = {
  apiKey: "apiKey",
  authDomain: "authDomain",
  databaseURL: "databaseURL",
  projectId: "projectId",
  storageBucket: "projectId",
  messagingSenderId: "messagingSenderId"
};

firebase.initializeApp(config);

firebase
  .database()
  .ref("list/")
  .push({
    title: "Title",
    createAt: new Date().toString()
  });

规则

{
  "rules": {
    ".read": "auth == null",
    ".write": "auth == null"
  }
}
  

我不会推荐这些规则设置,将其用于测试目的。