2017-05-29 16 views
0

我正在运行一个反应原生项目,其中包含一个Firebase数据库。React原生Firebase参考资料从未发布过

这是我第一次尝试:

firebase.database.ref("foo").once("value", function(s){console.log(s);}); 

直觉上,我认为这会在某些时候,被调用,检查foo不存在,它会返回一个空的快照。但这从来没有火灾。

于是我尝试:

var fooRef = firebase.database.ref("foo"); 
fooRef.once("value", function(s){console.log(s);}); 

这不火无论是。也不对:

var fooRef = firebase.database.ref("foo"); 
fooRef.once("value").then(function(s){console.log(s);}); 

然而,

var fooRef = firebase.database.ref("foo"); 
fooRef.set("bar"); 
fooRef.once("value", function(s){console.log(s);}); 

不火。之后没有其他任何其他键读取 - 它只读取前一条指令中写入的内容。

我花了大约5个小时尝试所有的firebase的故障排除技巧,我现在比沮丧,因为这似乎并没有工作在任何方式,它声称工作。读/写用户ref在index.android.js中工作正常,但fooRef只能在index.android.js中工作。

编辑:添加下面全码:

async getItems(obj, end_id) { 
     uid = await AsyncStorage.getItem("@user:uid"); 
     console.log("User id: " + uid) 
     console.log("App: " + firebase.database().app.name); 
     var listening = true; 
     firebase.database().ref("/user/" + uid + "/seen").once("value", function (snapshot) { 
      console.log("Got snapshot for seen reference.") 
      data = snapshot.val(); 
      discount = data.split(","); 
      console.log(discount) 
      cards = [] 
      console.log("Waiting to populate cards..."); 
      listening = false; 
     }); 
     console.log("Attempted to receive reference of seen."); 
     while(listening); listening=true; 
     firebase.database().ref("https://stackoverflow.com/users/"+uid).once("value", function(snapshot) { 
      console.log("Got snapshot of users."); 
      data = snapshot.val(); 
      if (discount.indexOf(data.id) < 0) { 
       cards.unshift({ 
        heading: data.title, subtitle: data.category, 
        image: data.uri, likes: data.likes, 
        id: data.id 
       }); 
      } 
      listening = false; 
      waiting = false; 
     }); 
     while (cards.length == 0); waiting = false; obj.setState({}); 
} 
.... 
constructor(props) { 
    super(props) 
    getItems(this,99999) 
} 
//waiting is a global variable 

回答

0

Firebase.database是功能,你需要添加/到裁判,因为裁判是路径,你的数据库,所以你应该这样写

firebase.database().ref('/foo').once('value').then(function(s){console.log(s.val());}) 
+0

以上所有方式尝试过,仍然没有奏效。 –

+0

@Woodworks你从构造函数调用getItems?你可以将它移动到componentDidMount生命周期方法吗? –

+0

我恢复到我第一次开始解决这个问题时使用的代码,不知何故,它神奇地开始工作......我没有任何线索 –