使用Firebase安全規則,如何檢查兄弟值以確定newData
是否有效?如何在Firebase規則中使用未知鍵檢查現有數據的值?
在我的應用程序中,每個game
都有moves
的列表。遊戲在這裏1405584062293
:
當一個新的舉措被提交,我想參照已經被播放的移動來驗證它。對於初學者來說,玩家應該只能夠每秒進行一次移動(玩家可以從索引0
開始進行移動,玩家2可以進行奇數移動)。
由於每個動作的關鍵是一個未知的隨機字符串(根據this recommendation in the docs),我不知道如何檢查以前的舉動。我也不知道如何計算現有舉措的數量。
這裏是我的結構:
{
"rules":{
".read":true,
"games":{
"$game":{
"moves":{
"$move":{
".write":"auth !== null",
// Something along these lines would get me going...
".validate":"data.parent().keys.count % 2 == 0"
}
}
}
}
}
}
在現實中,遊戲規則要複雜得多,我想我會需要使用火災安全或類似的解決方案,但現在我想知道如何實現這些和其他這樣簡單的規則。
感謝您的協助!我實際上最終通過簡單地選擇移動的id('move-0','move-1','move-2'...)來解決我的問題,並且因爲假設玩家將擁有完整的遊戲的移動列表不需要計數器。一切都在工作。 – doctororange