Javascript 未在Firebase上调用ref.once()
我对以下问题感到困惑。在制作一个小网页以查看Firebase上的一些数据时,有些地方我无法访问我想要的内容。 我当然知道服务器上的这个地方有东西。下面是代码,似乎从来没有调用过localRef.once()Javascript 未在Firebase上调用ref.once(),javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我对以下问题感到困惑。在制作一个小网页以查看Firebase上的一些数据时,有些地方我无法访问我想要的内容。 我当然知道服务器上的这个地方有东西。下面是代码,似乎从来没有调用过localRef.once() var dbLocalURL = "https://atinytestapp.firebaseio.com/MyList/rc99/"; var localRef = new Firebase(dbLocalURL); localRef.once("value", function(snap
var dbLocalURL = "https://atinytestapp.firebaseio.com/MyList/rc99/";
var localRef = new Firebase(dbLocalURL);
localRef.once("value", function(snapshot) {
// WE NEVER COME HERE !!!!
for (record in snapshot.val()) {
document.write(record)
var recordRef = new Firebase(dbLocalURL+record+"/");
recordRef.once("value", function(rcdSnapshot) {
var rcdData = rcdSnapshot.val();
document.write(rcdData[“someKey”])
})
}
}, function (errorObject) {
// WE NEVER COME HERE !!!!
console.log("The read failed: " + errorObject.code);
document.write("The read failed: " + errorObject.code);
});
我访问数据的页面在任何地方都能正常工作,除了有上述行为的地方。
此外,我还检查了我使用的URL是否正确,方法是将其粘贴到浏览器中并查看我期望的数据。
我会错过什么?我希望有人能给我一个提示。(注意:这是新的Firebase 3方式)
这没有包含在问题的代码中,但这里是上的初始化(为了完整起见)
火基2
var ref = new Firebase("https://atinytestapp.firebaseio.com/MyList/rc99/");
ref.on("value", function(snapshot) {
snapshot.forEach(function(record) { //ordered records, see comment
document.write(record)
...
});
注意:确保url是正确的,就好像它的格式不正确一样,它根本不起作用。我尝试了你的url,但它似乎没有响应。使用
snapshot.forEach()
而不是for(record in snapshot.val())
。后者将维持孩子们的秩序。我终于解决了这个问题——这是一个同步问题。我并不是在等待事情发生。我不得不与承诺抗争一段时间,现在它起作用了。非常感谢。可能对某人有用:one('value',function)
吞下了我的错误消息。当我更新到一次('value')。然后(函数)
我能够在控制台中看到一条错误消息。代码/流程对我有效:。你能设置一个类似的最小jsbin来重现这个问题吗?
firebase.database().ref('MyList/rc99').once('value').then(function(snapshot) {
for (record in snapshot.val()) { //unordered records, see comment
document.write(record)
...
var ref = new Firebase("https://atinytestapp.firebaseio.com/MyList/rc99/");
ref.on("value", function(snapshot) {
snapshot.forEach(function(record) { //ordered records, see comment
document.write(record)
...
});