我在Firebase实时数据库上有这样的数据集。
Users
---Match
------User1
mId:"12345"
xId:""
------User2
mId:"54321"
xId:""
此处使用 android 应用程序基本开发了多玩家匹配功能。假设用户1与用户2匹配。用户1 将更新自己的 xId user2 mId 值和 user2 的值将使用 mId 更新自己的 xId 值 user1 的值。 如果有两个用户,则可以正常工作。两者相互连接并且运行良好。当3个用户同时出现时,就会出现问题。用户1写入用户2,用户2写入用户3并创建不一致的数据集。 我想锁定一个更改后的值,或者我们可以说一个简单的规则。
update user1 only : if(user1.xid=="")
update user2 only : if(user2.xid=="")
是否可以使用Firebase安全规则?
答案 0 :(得分:1)
要仅允许写入新数据(以免覆盖或删除现有数据),您将需要以下规则:
{
"rules": {
"Users": {
"Match": {
"uid": {
".validate": "!data.child('xid').exists() && newData.child('xid').exists()"
}
}
}
}
}
有关详细信息,请查看Firebase documentation for security rules,特别是New vs. Existing Data上的部分。