Firebase,加入路径

时间:2016-10-13 18:54:45

标签: firebase firebase-realtime-database angularfire firebase-security firebase-util

我有以下数据结构:

/users/$userId/profile/...
/users/$userId/job/...
/users/$userId/personal/... 

假设我想阅读一些关于用户的数据' jobprofile并将其显示为列表。这里有2个(相关的)问题:

1。如何设置.read安全规则。如果我说:

"users": { 
    ".read": "auth != null",
    ...
}
然后规则级联。为什么我不能在三条不同的路径下三次复制相同的规则?因为,然后我一起加入路径时出错。考虑一下:

var ref = fbutil.ref();     
var refSearch = new Firebase.util.NormalizedCollection(
                [ref.child('users'), 'usrId']
            ).select('usrId.job', 'usrId.profile').ref(); 
var result = refSearch.orderByChild("profile/name");
return $firebaseArray(result);

如果我在三条路径下有三条不同的规则,则上述操作会失败,因为它无法读取usrId本身。

2。我不确定在这里使用NormalizedCollection是否是最佳解决方案。有没有其他方式加入2条路径?这也有助于解决第一个问题。

那么,如何在不制作' / users / $ userId'的情况下加入2路径/users/$userId/profile//users/$userId/job/)路径可读?

1 个答案:

答案 0 :(得分:0)

如果您需要在公共和私人数据之间进行分离,请构建您的结构的一部分:

{
    "rules": {
        "users": {
            "$user_id": {
                private: {
                    ".read": "$user_id === auth.uid"
                }
                public: {
                    ".read": "true",
                    "job": {},
                    "profile": {}
                }
            }
        }
    }
}