Firebase:数据库引用'on'方法没有运行回调(javascript)

时间:2017-01-13 00:43:07

标签: javascript firebase firebase-realtime-database

我正在调查可能不存在的数据的查询。在这种情况下,不会运行回调。据我从文档中了解,它应该运行,snapshot.val()应该为null,不是吗?

这里有一个精简的例子:http://surfmaps.eu/trombone/case.html

回调中有一个未执行的console.log。

我在这里错过了什么吗?

再见,谢谢,Luís

代码:

function getData(id) {
    var ref=firebase.database().ref("support/"+id); 
    console.log("In getData, looking for ",ref);

    // get support data from firebase
    ref.on('value',function (snapshot) {
        console.log("In Value");
        console.log(snapshot);
    });

    console.log("end getData, looking for ",ref);

}

// on startup
getData("abc");

3 个答案:

答案 0 :(得分:10)

您无权阅读数据。要查看此内容,您可以附加完成侦听器并记录它为您提供的错误:

filter_cond = False
for asset in assets:
    filter_cond = or_(filter_cond, and_(model.version == asset.get("version"),
                                        model.id == asset.get("id"),
                                        model.account_id == account_id))
query = session.query(model).filter(filter_cond)
result_set = query.all()

这样做表明:

  

错误:/ support / abc中的permission_denied:客户端无权访问所需数据。

答案 1 :(得分:1)

请参见Firebase Rules,您无权访问Firebase数据库集合。

转到Firebase控制台,数据库,规则进行更新:

{
  "support{
    ".read": true, // allow read
    ".write": false
  }
}

答案 2 :(得分:0)

使用

function(error) {
console.error(error);

查找错误。应该是因为

错误:/ react中的权限被拒绝:客户端没有权限 访问所需的数据。

通过转到实时数据库->规则->将读取和写入从false更改为true来更改。