Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Firebase实时数据库规则中获取newData的最大值?_Firebase_Firebase Realtime Database_Firebase Security - Fatal编程技术网

如何在Firebase实时数据库规则中获取newData的最大值?

如何在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

firebase规则的新功能。我可能认为这是完全错误的,但无论如何,我正在尝试创建一个规则,以确保写入数据库的新数据不存在于正在写入的节点下。要写入数据库,我使用以下代码:

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现在更好了吗?