在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:客户端没有访问所需数据的权限
答案 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
进行更广泛的阅读。