如何在set函数上修复newData的安全规则

时间:2019-07-06 03:44:58

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

我正在开发离子应用程序,我想将数据作为对象发送到我的Firebase实时数据库,并将数据与某些对象进行比较,但是在服务器端(这是我对newData的安全性规则),写规则似乎不正确。

这是我的发送代码

var firebaseRef = this.afd.database.ref();
firebaseRef.child('Download/01/1').set({password:2431,name:'john'});

我的数据库节点应该写在这里

Download: {
  01 : {
      1: { // the data will be written here

      }
  }
}

这是我的安全规则

"Download": {    
   "$id": { 
      ".write": "newData.child('password').val() === 4321"
   }
}

如您所见,我故意将密码写在我的设置函数“ 2431”上,以便在验证写规则期间将其视为不正确的过程,但是即使输入密码,写规则仍会继续写数据库收到的信息不正确,您能建议我的代码中哪些内容正确吗?谢谢

1 个答案:

答案 0 :(得分:1)

您的规则和查询不匹配。您正在写“ Download / 01/1”,密码设置为“ Download / 01/1 / password”。但是,您的规则设置为“下载/ XX”,并且File "C:/Users/rajat/PycharmProjects/untitled1/venv/MAINPROJECT.py", line 278, in showbillingsystem txtreference = Entry(f1, font=('ariel', 16, 'bold'), textvariable = rand, bd=6, insertwidth=6, bg="yellow",justify = RIGHT) File "C:\Users\rajat\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 2676, in __init__ Widget.__init__(self, master, 'entry', cnf, kw) File "C:\Users\rajat\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 2299, in __init__ (widgetName, self._w) + extra + self._options(cnf)) File "C:\Users\rajat\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 341, in __str__ return self._name AttributeError: 'StringVar' object has no attribute '_name' 指向“下载/ XX /密码”(请注意,路径中缺少“ 1”)。也许您的意思是这样的:

newData.child('password')

或者也许:

"Download": {    
   "$id": {
      "$i": {
        ".write": "newData.child('password').val() === 4321"
      }
   }
}