如何在Firebase实时数据库中基于输入数据编写规则条件
我有一个Firebase实时数据库,它以预测的结构写入 是否有方法使用规则验证经过身份验证的用户的UID是否与某个数据输入值匹配? ,但在我的例子中,我想将UID与输入JSON中的数据进行比较如何在Firebase实时数据库中基于输入数据编写规则条件,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我有一个Firebase实时数据库,它以预测的结构写入 是否有方法使用规则验证经过身份验证的用户的UID是否与某个数据输入值匹配? ,但在我的例子中,我想将UID与输入JSON中的数据进行比较 例如,在我的例子中,输入数据采用以下JSON数据结构: { "UserID": "SOME_UID", "UserName": "SOME_USERNAME", "CompletionMoves": 3,
例如,在我的例子中,输入数据采用以下JSON数据结构:
{ "UserID": "SOME_UID", "UserName": "SOME_USERNAME", "CompletionMoves": 3, "CompletionTime": 12.345 }
它被发布到一个位置,其中包括一个级别名称,然后是用户的UID,类似于/Level3/SOME\u UID
我想验证用户的UID是否等于数据中的UserID值
我曾想过尝试以下规则逻辑,但由于某种原因,它在uid比较行的测试中失败:
{
"rules": {
"$level": {
"$uid" : {
".read": "auth != null",
".write": "auth != null
&& newData.child($level).child($uid).child('UserID').val() == auth.uid",
}
}
}
}
有人知道我错过了什么吗?提前谢谢 请尝试“.child(auth.uid)”而不是“.child($uid)”
这对我很有用(如果我正确理解了您的问题)。安全性中的
newData
和data
变量是声明规则的节点上(新)数据的快照。因此,您不需要构建到UserID
的整个路径,而是可以直接引用它
因此,不是:
&& newData.child($level).child($uid).child('UserID').val() == auth.uid",
使用:
&& newData.child('UserID').val() == auth.uid",