【发布时间】:2013-12-14 03:47:15
【问题描述】:
我正在创建一个应用程序,它允许用户创建项目,然后允许其他用户订阅这些项目。我正在努力制定一条规则,以防止用户多次订阅一个项目。
这是我的数据结构的一个示例(匿名,因此是“OMITTED”值):
{
"OMITTED" : {
"name" : "Second",
"body" : "this is another",
"userName" : "Some User",
"userId" : "OMITTED",
"created" : 1385602708464,
"subscribers" : {
"OMITTED" : {
"userName" : "Some User",
"userId" : "OMITTED"
}
}
}
}
这是我目前的 Firebase 规则:
{
"rules": {
".read": true,
".write": "auth != null",
"items": {
"$item": {
".write": "!data.exists()",
".validate": "newData.hasChildren(['name', 'body', 'userId', 'userName']) && newData.child('userId').val() == auth.id",
"subscribers": {
"$sub": {
".validate": "newData.hasChildren(['userId', 'userName']) && newData.child('userId').val() != data.child('userId').val()"
}
}
}
}
}
}
如何防止用户多次订阅?我需要什么规则来防止基于userId 的subscribers 列表中的重复用户?
【问题讨论】:
-
如果您想防止多个条目具有相同的用户 ID,那么每个 ID 的记录都是唯一的。因此,使用用户 ID 作为该记录的键,那么只能有一个 :)
-
为什么不把它作为一个实际的答案呢?
-
因为时间是一种宝贵的商品,我的朋友,而且在我想花费的时间并不总是可用的。 :)
标签: validation firebase firebase-security