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
以上所有方式尝试过,仍然没有奏效。 –
@Woodworks你从构造函数调用getItems?你可以将它移动到componentDidMount生命周期方法吗? –
我恢复到我第一次开始解决这个问题时使用的代码,不知何故,它神奇地开始工作......我没有任何线索 –