【问题标题】:Unable to push data into the firebase database from react native app无法从反应本机应用程序将数据推送到 firebase 数据库
【发布时间】:2018-06-26 02:57:47
【问题描述】:

我一直在尝试使用 firebase 并成功实现了身份验证 api。但我无法将数据推送到 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()
});

【问题讨论】:

  • 您确定您的数据库 RULES 设置为公开吗?
  • 您是否在应用程序中初始化了 Firebase? firebase.initializeApp({ apiKey: "&lt;API_KEY&gt;", databaseURL: "https://&lt;DATABASE_NAME&gt;.firebaseio.com" })

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


【解决方案1】:

如果没有明确定义的问题,很难说出确切的解决方案。您是否已在应用中初始化了您的 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"
  }
}

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

【讨论】:

  • 我已经尝试过您的代码,但它不起作用。我已经编辑了我的问题。请注意。
  • 我在这里发布之前测试了我的代码。你是安卓还是ios? .plist 中的允许任意负载是否设置为 true?
  • 我正在为 android 构建。
  • 我使用 react-native init 创建了一个新的 RN 项目。在 App.js 的构造函数中,我添加了您的代码。规则也与您指定的相同。但仍然无法向 firebase 数据库写入任何内容。
  • 您确定配置设置吗?在compnentDidMount 中尝试firebase.database().ref("list/").push(...)。对不起,我不能帮你更多。
猜你喜欢
  • 1970-01-01
  • 2018-08-19
  • 2019-04-17
  • 2017-08-05
  • 1970-01-01
  • 2020-04-16
  • 1970-01-01
  • 2021-10-07
  • 1970-01-01
相关资源
最近更新 更多