ReactFire不会从实时数据库加载数据

时间:2016-08-20 03:32:52

标签: javascript reactjs firebase firebase-realtime-database reactfire

我有一个带有实时数据库的Firebase项目,该数据库包含一些测试项目,在此结构中:

project-21093
|_items
  |_item1
    |_name: "Name"
    |_category: "Category"
  |_item2
    |_name: "Name2"
    |_category: "Category:

我的index.html文件包含<script src="https://www.gstatic.com/firebasejs/3.3.0/firebase.js"></script>标记,这是我的index.js:

&#13;
&#13;
import React from 'react';
import ReactDOM from 'react-dom';
import firebase from 'firebase/app';
require("firebase/auth");
require("firebase/database");
import ReactFireMixin from 'reactfire';
require("./styles/customisations.scss");

// Initialize Firebase
var config = {
  apiKey: "key",
  authDomain: "auth",
  databaseURL: "url",
  storageBucket: "storage",
};
firebase.initializeApp(config);

var App = React.createClass({
  mixins: [ReactFireMixin],

  getInitialState: function() {
    return {
      items: []
    };
  },

  componentWillMount: function() {
    var fireRef = firebase.database().ref("items");
    this.bindAsArray(fireRef, "items");
  },

  render: function() {}
})
&#13;
&#13;
&#13;

整个config部分直接取自项目页面给我的内容。它没有按照指示在index.html中工作,所以我在这里加载它。我不确定究竟需要哪些要求所以我加了一堆。

我的问题是this.state.items总是空的,尽管我的实时数据库中有项目,我认为这些项目要绑定到this.state.items中的componentWillMount数组。由于文档从未指定需要将哪个参数传递到firebase.database().ref()调用,因此我尝试了从project/itemsproject-21093/items和变体到database/data/items的所有内容,但没有成功。 Chrome开发工具的React插件清楚地向我显示了空数组。成功加载此数据我缺少什么?

1 个答案:

答案 0 :(得分:1)

事实证明,在&#39;规则&#39;实时数据库的一部分&#39;选项卡,我需要稍微改变一下规则:

&#13;
&#13;
{
  "rules": {
    ".read": true,
    ".write": "auth != null"
  }
}
&#13;
&#13;
&#13;

.read设置为"auth != null"我无法访问任何内容,将其更改为true最终会让我获取数据。在任何创业文档中都没有提到这一点,所以直到我看到this Firecast video我才知道该做什么为止。我仍然不确定我是如何配置这个以便正确使用网页的,但至少我现在可以使用一些数据制作我的应用程序。