如何在Firebase实时数据库规则中获取newData的最大值?
firebase规则的新功能。我可能认为这是完全错误的,但无论如何,我正在尝试创建一个规则,以确保写入数据库的新数据不存在于正在写入的节点下。要写入数据库,我使用以下代码:如何在Firebase实时数据库规则中获取newData的最大值?,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,firebase规则的新功能。我可能认为这是完全错误的,但无论如何,我正在尝试创建一个规则,以确保写入数据库的新数据不存在于正在写入的节点下。要写入数据库,我使用以下代码: self.reference?.child("users").child(userid).setValue(data) { (error, result) in if (error != nil) { completion(t
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...
}
},
我传入的新数据如下所示:
{ keyBasedOnAuthID {
uid: auth.uid
name: xxxx
other:{
key: xxx
key: xxx
}
} }
我正在将此数据写入名为“users”的节点,因此最终路径将是root.child(“users”).child(newData)。我想制定的规则将防止用户将重复数据写入“用户”节点。所以我想从newData中获取keyBasedOnAuthID值,并检查它是否已经存在
这可能吗?我尝试了许多不同的方法从newData快照中检索KeyBasedAuthID,但都没有成功。也许我需要一个不同的方法?任何帮助都将不胜感激 不幸的是,我不确定您使用的是哪种语言 但是,
setValue
不会创建重复项:为给定路径创建或更新数据
因此,如果您不想更新现有数据,则需要在应用程序代码中调用
setValue
方法之前检查是否存在。如果您编辑问题以显示添加数据的完整代码,可能会更清楚,并更清楚地解释您希望在什么情况下接受正在编写的新数据。@DougStevenson现在更好了吗?