Я использую базу данных Firebase в реальном времени для создания игры в стиле покемонов.
Для каждого пользователя у него есть такая структура данных:
Каждая запись в узле «pokemon» имеет идентификатор, соответствующий идентификатору в узле «прослушиваемых покемонов».
Я хочу использовать правила безопасности, чтобы никто не мог создать новый узел в узле «pokemon» с идентификатором, существующим в узле «tappedpokemon».
Я пытался использовать такое правило:
{
"rules": {
"users": {
"$user_id": {
".read": "$user_id === auth.uid",
"tappedpokemon" : {
"$id" : {
".write": "!data.exists() || !newData.exists()",
}
},
"pokemon" : {
"$mon" : {
".write": "!data.parent().parent().child('tappedpokemon').child(newData.child('id').val()).exists() && !data.exists()",
}
}
}
}
}
}
Но этот код выдает истину каждый раз.
firebase.database().ref("users/" + firebase.auth().currentUser.uid +
"/tappedpokemon/" + "784193e6-6f94-49a1-958d-877080460a38").set(true);
pokemon_inventory_ref.push({id: "784193e6-6f94-49a1-958d-877080460a38",
name:"Lapras", lat:20, lng:38, date:Date.now(),
iv: Math.floor(Math.random() * (120 - 20 + 1)) + 20});
Есть лиспособ сделать это?