【发布时间】:2019-01-22 01:07:10
【问题描述】:
我在执行更新操作时在 Firebase 安全规则中使用 newData 时遇到问题。
这是我的数据结构:
这是我的规则:
{
"rules": {
"videos": {
"$videoId": {
"data": {
"content": {
"srcURL": {
".write": "root.child('videos/' + $videoId + '/tokens/' + newData.child('/videos/-1vidid/requestToken').val() + '/read' ).exists()"
},
},
"meta": {
"status": {
".write": "root.child('videos/' + $videoId + '/tokens/testTok/read').exists()"
}
}
},
"requestToken": {
".write": true,
}
}
}
}
}
这是我试图通过更新写入的数据:
{
"videos/-1vidid/data/meta/status": "uploaded",
"videos/-1vidid/data/content/srcURL": "https",
"videos/-1vidid/requestToken": "testTok"
}
当我尝试使用 newData 时,我的规则失败了;
请注意,当我在令牌(“testTok”)中硬编码时它正在工作,但是当我尝试使用 newData 时它不会清除。
当我从 newData 子项中删除“videos”和 $videoId ("-1vidid) 时,这里有更多尝试:
知道为什么 newData 似乎没有进行更新吗?
【问题讨论】:
-
请编辑问题以显示规则。
-
添加了更多信息
-
您的规则难以阅读。缩进不一致,很难分辨花括号在哪里排列。
-
模拟结果截图(包括通过和失败的规则)是不是更容易阅读?
-
没有规则看(带行号),截图意义不大。规则可以跨越多行,如果没有上下文,就无法说出您要完成的任务。
标签: firebase firebase-realtime-database firebase-security