使用Firebase RuleDataSnapshot方法访问用户数据 [英] Using Firebase RuleDataSnapshot Methods to access user data
本文介绍了使用Firebase RuleDataSnapshot方法访问用户数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
root {
PrivateRooms {
< PrivateRoomName> {
...
}
}
用户{
{
permissionFrom {
< PrivateRoomName>:value is不是私人房间名称
}
...
}
}
}
...我如何编写规则来授予对<
rules:{
PrivateRooms:{
$ roomName:{
.read:root.child('users' ).child(auth.uid).child('permissionFrom')。hasChild('$ roomName')== true,
.write:root.child('users')。child .child('permissionFrom')。hasChild('$ roomName')== true
},
users:{
.read :true,
.write:true
}
}
}
...但是在跳过这个数据快照的时候,规则必然是错的:
var testRef = new Firebase('https://my.firebaseio.com/privateRooms/<privateRoomName>/privRoomChild');
testRef.once(value,function(snapshot){
var testVal = snapshot.val();
console.log(testVal);
});
解决方案
$ roomName: {
$ p(user.child $ p>
.read:root.child('users')。child(auth.uid).child('permissionFrom')。hasChild($ roomName),
.write: hasChild($ roomName)
}
If I have data like this:
root{ PrivateRooms{ <PrivateRoomName>{ ... } } users{ <uid>{ permissionFrom{ <PrivateRoomName>:value is not private room name } ... } } }
...how do I write rules to grant access to < PrivateRoomName > based on the user's permissionFrom children?
I thought this would work:
{ "rules": { "PrivateRooms" : { "$roomName":{ ".read" : "root.child('users').child(auth.uid).child('permissionFrom').hasChild('$roomName') == true", ".write" : "root.child('users').child(auth.uid).child('permissionFrom').hasChild('$roomName') == true" } }, "users" : { ".read" : true, ".write" : true } } }
...but something must be wrong with the rules as this data snapshot is skipped over:
var testRef = new Firebase('https://my.firebaseio.com/privateRooms/<privateRoomName>/privRoomChild'); testRef.once("value", function(snapshot){ var testVal = snapshot.val(); console.log(testVal); });
解决方案In your rules,
$roomName
is a variable, so it should not be wrapped in quotes."$roomName":{ ".read" : "root.child('users').child(auth.uid).child('permissionFrom').hasChild($roomName)", ".write" : "root.child('users').child(auth.uid).child('permissionFrom').hasChild($roomName)" }
这篇关于使用Firebase RuleDataSnapshot方法访问用户数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文