我正在使用Firebase实时数据库制作口袋妖怪风格的游戏。
对于每个用户,他们都有这样的数据结构:
“ pokemon”节点中的每个条目都有一个ID,该ID与“ tapped pokemon”节点中的ID相对应。
我想使用安全规则来确保没有人可以在“ pokemon”节点中创建一个新节点,该节点的ID存在于“ 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});
有没有办法做到这一点?