Firebase,加入路径
Firebase, join paths
我有以下数据结构:
/users/$userId/profile/...
/users/$userId/job/...
/users/$userId/personal/...
假设我想读取一些关于用户 job
和 profile
的数据并将其显示为列表。这里有 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/
)?
如果您需要在 public 和私有数据之间进行分隔,请将其作为结构的一部分:
{
"rules": {
"users": {
"$user_id": {
private: {
".read": "$user_id === auth.uid"
}
public: {
".read": "true",
"job": {},
"profile": {}
}
}
}
}
}
我有以下数据结构:
/users/$userId/profile/...
/users/$userId/job/...
/users/$userId/personal/...
假设我想读取一些关于用户 job
和 profile
的数据并将其显示为列表。这里有 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/
)?
如果您需要在 public 和私有数据之间进行分隔,请将其作为结构的一部分:
{
"rules": {
"users": {
"$user_id": {
private: {
".read": "$user_id === auth.uid"
}
public: {
".read": "true",
"job": {},
"profile": {}
}
}
}
}
}