尝试访问具有ID的数据时,firebase规则中的通配符不起作用

时间:2019-05-19 21:14:32

标签: javascript firebase firebase-realtime-database firebase-security-rules

在Firebase规则中使用通配符时,为什么没有返回数据的原因?

我正在尝试使用Firebase规则中的ID来访问数据。我的数据存储在complete / -docid /

Firebase规则:

{
"rules": {
"complete": {
  "$completeid": {
    ".read": "data.child('status').val() === 'Resolved'",
    ".write": true
   }
  }
 }
}

像这样在我的代码中检索数据:

firebase.database().ref('/complete').orderByChild('status').equalTo('Resolved').once('value')

我只想访问状态值为“已解决”的数据。但是我一直在/ complete:客户端没有访问所需数据的权限

1 个答案:

答案 0 :(得分:0)

您的代码正在尝试从/complete进行读取,但是您的规则未授予对/complete的任何读取权限。请记住,rules don't filter data

幸运的是rules can be used to authorize specific queries,这是您在这里需要的:

{
  "rules": {
    "complete": {
      ".read": "query.orderByChild == 'status' && query.equalTo == 'Resolved'",
      "$completeid": {
        ".write": true
      }
    }
  }
}

使用这些规则,您的查询是允许的,但将拒绝从​​/complete进行更广泛的阅读。