Javascript 尝试访问id为的数据时,firebase规则中的通配符不起作用
当我在firebase规则中使用通配符时,为什么不返回数据 我正在尝试使用firebase规则中的ID授予对数据的访问权限。我将数据存储在complete/-docid中/ Firebase规则:Javascript 尝试访问id为的数据时,firebase规则中的通配符不起作用,javascript,firebase,firebase-realtime-database,firebase-security,Javascript,Firebase,Firebase Realtime Database,Firebase Security,当我在firebase规则中使用通配符时,为什么不返回数据 我正在尝试使用firebase规则中的ID授予对数据的访问权限。我将数据存储在complete/-docid中/ Firebase规则: { "rules": { "complete": { "$completeid": { ".read": "data.child('status').val() === 'Resolved'", ".write": true } } } } 在我的代码中检索数据,如下
{
"rules": {
"complete": {
"$completeid": {
".read": "data.child('status').val() === 'Resolved'",
".write": true
}
}
}
}
在我的代码中检索数据,如下所示:
firebase.database().ref('/complete').orderByChild('status').equalTo('Resolved').once('value')
我只想授予对状态值已解析的数据的访问权限。但我一直在获取/完成:客户端没有访问所需数据的权限您的代码正在尝试从
/complete
读取,但您的规则不授予对/complete
的任何读取权限。记住这一点
幸运的是,这正是您在这里需要的:
{
"rules": {
"complete": {
".read": "query.orderByChild == 'status' && query.equalTo == 'Resolved'",
"$completeid": {
".write": true
}
}
}
}
使用这些规则,您的查询是允许的,但是从
/complete
中更广泛的阅读将被拒绝。谢谢。但是您对这样的规则有什么看法:“query.orderByChild=='status'和&query.equalTo=='Resolved'| | query.orderByChild=='userId'和&query.equalTo=='auth.uid | | root.child('admins').child(auth.uid).child('role').val()=='admin'
?我一直在尝试这个,但它似乎仍然被拒绝。让我们一次只回答一个问题。我写的规则应该涵盖你问题中的问题。你试过了吗?有效吗?是的,第一个有效:”。读:“query.orderByChild=='status'和&query.equalTo=='Resolved'