【发布时间】:2020-09-25 14:09:51
【问题描述】:
Firebase 规则的新功能。我可能认为这一切都错了,但无论如何,我正在尝试创建一个规则,以确保写入数据库的 newData 不存在于它正在写入的节点下。要写入数据库,我正在使用此代码:
self.reference?.child("users").child(userid).setValue(data) {
(error, result) in
if (error != nil) {
completion(true, error!.localizedDescription)
} else {
completion(false, "")
}
}
这里是我想创建规则的地方:
{
"rules": {
".read": false,
"users": {
".write": //allow write if the newData's keyBasedOnAuthID is not under students already
"$student_id": {
//more rules...
}
},
我传入的 newData 看起来像这样:
{ keyBasedOnAuthID {
uid: auth.uid
name: xxxx
other:{
key: xxx
key: xxx
}
} }
我正在将此数据写入名为“用户”的节点,因此最终路径将是 root.child('users').child(newData)。我想制定的规则将阻止用户将重复数据写入“用户”节点。所以我想从 newData 中获取 keyBasedOnAuthID 值并检查它是否已经存在。
这可能吗?我尝试了许多不同的方法来从 newData 快照中检索 keyBasedOnAuthID,但没有一种方法奏效。也许我需要一种不同的方法?任何帮助将不胜感激!
【问题讨论】:
-
如果您编辑问题以显示添加数据的完整代码可能会更清楚,并更清楚地说明您希望接受正在写入的新数据的情况.
-
@DougStevenson 现在好点了吗?
标签: firebase firebase-realtime-database firebase-security