对于我的iOS应用程序,我允许用户发出与Facebook好友请求原则相似的好友请求。因此,有人可以拥有x个朋友。
我想阻止用户向同一个用户发送多个朋友请求,并希望通过在数据库规则中添加验证规则来实现这一点 - (我还没有探索过另一个列表的选项)还)
我当前的验证规则是阻止用户向自己发送好友请求。
下面是数据库的结构,我需要检查'fromUid'和'toUid'的值是否已经成对存在。
"requests" : {
"-KUr12h72I4T2WiI4JG0" : { // autoChildId
"fromUid" : "etOdpR0wpKYNFrIP7BNirhCYuYo1",
"toUid" : "UeATHfKdjVYunsOt8L0TGxfCBTQ2"
}
我现有的规则阻止用户向自己发送好友请求
"requests": {
".read": "auth != null",
"$autoID": {
".validate": "newData.child('fromUid').val() != newData.child('toUid').val()"
}
},
那么如何验证'fromUid'值和'toUid'值是否已经作为一对存在?这个朋友的请求还没有完成。
这是我对安全规则失败的尝试:
".validate": "&& newData.child('fromUid').val() + newData.child('toUid').val() !== data.child('fromUid').val() + data.child('toUid').val() && newData.child('toUid').val() + newData.child('fromUid').val() !== data.child('toUid').val() + data.child('fromUid').val()"
如果您需要更多信息或清晰度,请与我们联系 感谢
答案 0 :(得分:3)
良好(和正确)的数据库结构超过项目的一半。如果您严重设计数据库结构,则会遇到大麻烦,尤其是在使用NOSQL数据库时。如果你事先花时间设计数据库,你会很高兴。
您应该设计项目并事先考虑您需要哪些操作,您希望如何显示具有哪些角色的数据并根据它来设计您的firebase数据库。
我的建议是阅读以下有关从firebase文档构建数据的页面。
https://firebase.google.com/docs/database/web/structure-data
我建议通过toUid
修改数据库结构和组fromUid
。
{
"requests": {
// user Ids who sent request
"userId1": {
// receiver ids
"userId2": true,
"userId3": true,
"userId4": true
},
"userId2": {
"userId3": true,
"userId4": true
}
}
}
这里重复的请求是不可能的。唯一检查你要做的是用户无法向自己发送请求。
这是规则。
"requests": {
".write": "auth != null",
"$senderId": {
"$receiverId": {
".validate": "$senderId !== $receiverId"
}
}
}
使用此结构,您也可以轻松地执行其他操作。例如,通过fromUid
获取所有请求。检查userId1
是否向userId2
等发送了请求