2017-06-28 24 views
1

在使用Google Maps APIs Transport Tracker教程时,除了.on()回调之外,所有内容似乎都能按预期工作。没有任何回调似乎正在解雇。Firebase reference.on()未触发

单击登录到控制台的引用链接显示预期的Firebase数据库路径,并定期更新。但是,下面的回调从未被解雇。

firebase.initializeApp(firebaseConfig); 
    const db = firebase.database(); 

    console.log('Adding callback for current-time changes'); 
    var ref = db.ref('current-time'); 
    console.log('ref = '+ref); 
    ref.on('value', snapshot => { 
    console.log('Current-time snapshot'); 
    displayTimeElement.textContent = snapshot.val().display; 
    console.log(snapshot.val().display); 
    }); 

控制台记录下列内容。

Adding callback for current-time changes 
index.js:500 ref = https://transport-tracker-XXXXX.firebaseio.com/current-time 

回调由控制台消息没有被记录,以及HTML页面的displayTimeElement值永远不会更新证实是从来没有发射。我也尝试在回调中设置一个断点,但它永远不会到达。

因此,我可以做的唯一的假设是回调从来不会因某些未知原因而发射。

感谢您提供的任何帮助。

+0

我没有提到,我使用Chrome浏览器查看页面。 –

回答

3

如下图所示添加了cancelCallbackOrContext的回调后,它记录了我的应用程序没有读取权限。

db.ref('current-time').on 
    ('value' 
    ,snapshot => { 
     displayTimeElement.textContent = snapshot.val().display; 
     } 
    ,error => {console.log(error);} 
    ); 

改变数据库认证规则后:按要求

{ 
    "rules": { 
    ".read": true, 
    ".write": true 
    } 
} 

一切正常。

这本来是很好,如果交通运输跟踪教程已经提到了这一点......