我正在尝试使用Firebase对一个简单的约会应用程序执行一些安全性规则(实际上是一项测试,因此不要对我的数据结构有太大的期望)。我有以下数据库:
Female_User (Collection)
........JikoSUJJozEEUJz7gLQq (Document)
........Data (Collection)
........Likes (Collection)
........9SpjkLtbo5fKz1f3doGx (Document)
........Unlikes (Collection)
........Matches (Collection)
男性用户是等效的。
假装我们是男性用户9SpjkLtbo5fKz1f3doGx
,喜欢女性用户JikoSUJJozEEUJz7gLQq
:
只有在男性/Matches/{documents}
中存在男性ID的情况下,才允许在女性/Likes/{documents}
中进行写入过程(通常是相反的情况)。
我在模拟器上尝试了以下安全规则:
service cloud.firestore {
match /databases/{database}/documents {
allow read;
match /Female_User/{UserID}{
match /Matches/{MatchIDs}{
allow write: if exists(/databases/$(database)/documents/Female_User/$(User_ID)/Likes/$(request.auth.uid));
}
}
}
}
每次都在模拟器中拒绝该过程。我的现有支票中的错误在哪里?而且我是否必须指定女性UID,因为如果我们有多个帐户,并且有3个女性喜欢男性用户,那么该方法是否不允许男性一直将文字写到他喜欢的用户旁边的每个帐户中?
答案 0 :(得分:1)
您的规则的通配符值UserID
与文档路径中的用法User_ID
不匹配。注意下划线。