Firebase .indexOn,我怎样才能确保这个索引是唯一的

时间:2016-07-26 22:43:18

标签: firebase firebase-realtime-database firebase-security

我有以下数据结构:

{"applicants":[
{
"-KNbKoNzPGsz2TAQp-j9" : {
"email" : "zahavi@post.tau.ac.il",
"id" : "056042344",
"name" : "Jacob",
"prefix" : "Prof.",
"surname" : "Zahavi"
},
"-KNbWPpsrFGJBDaWK2EN" : {
"email" : "chamud@gmail.com",
"id" : "314965211",
"name" : "Ilay",
"prefix" : "Mr.",
"surname" : "Shvo"
},
"-KNd8HvkzAYi0LtG9qNj" : {
"email" : "zahavi@zpost.tau.ac.il",
"id" : "056042344",
"name" : "Jacob",
"prefix" : "Prof.",
"surname" : "Zahavi"
}]
}
}

我想对字段ID强制执行唯一性规则,因此无法在具有相同id值的申请人集合中创建两个条目。

目前我的规则是:

{
"rules": {
".read": true,
".write": true,
  "Tables":{"applicants":{"id":{".indexOn":".value"}}}
}
}

我探索了两种可能的解决方案: 交易。不幸的是,我没有找到从查询运行事务的方法。 规则。但没找到合适的东西。

编辑(来自评论):

我尝试了以下规则:

{
    "rules": {
        ".read": true,
        ".write": true,
        "Tables": {
            "applicants": {
                "$app": {
                    "id": {
                        ".indexOn": ".value",
                        ".validate": "!root.child('Tables').child('applicants').child(newData.child('id').val()).exis‌​ts()"
                    },
                }
            }
        }
    }
}

并且即使对于不存在的值

,我总是被创建失败的权限被拒绝

0 个答案:

没有答案