Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.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
Javascript 如何验证servertimestamp是否小于Firebase本身的某个值?_Javascript_Json_Firebase_Firebase Security - Fatal编程技术网

Javascript 如何验证servertimestamp是否小于Firebase本身的某个值?

Javascript 如何验证servertimestamp是否小于Firebase本身的某个值?,javascript,json,firebase,firebase-security,Javascript,Json,Firebase,Firebase Security,我需要Firebase规则的帮助,我有一个孩子,我在那里存储时间戳 我只需要在服务器时间戳小于日期->日期子项上存储的时间戳时,才允许写入firebase中的另一个位置。 我不知道如何写或验证,也不知道如何让规则读取Firebase本身的特定值 { "rules": { "test":{ ".read" : false, this-->".write": "now < root.child('date\D

我需要Firebase规则的帮助,我有一个孩子,我在那里存储时间戳

我只需要在服务器时间戳小于日期->日期子项上存储的时间戳时,才允许写入firebase中的另一个位置。 我不知道如何写或验证,也不知道如何让规则读取Firebase本身的特定值

{
    "rules": {
        "test":{
                 ".read" : false,
          this-->".write": "now < root.child('date\Date')",
       or this-->".validate": "now < root.child('date\Date')"
        }
    }
}
{
“规则”:{
“测试”:{
“.read”:错误,
这个-->“.write”:“现在“.validate”:“现在
更新

我现在可以从某个位置阅读,但问题是如何为comarison设定价值。 我尝试了(int)(Integer)parseInt()Number(),但都失败了

我是否走上了正确的道路,还是应该采取不同的做法

更新2 我成功地编写了一个可接受的规则——不会产生错误——但它不起作用,就在这里

{
    "rules": {
        "test":{
          ".write": "now < root.child('date/Date').val()",
          ".read" : false
        }
    }
}
{
“规则”:{
“测试”:{
.write:“现在
有什么建议吗

更新3

实际上,它没有很好地工作,我认为它是在比较来自'now'函数的数字和来自root.child.val的字符串,所以规则总是错误的

我设法解决了这个问题,把解决方案放在这里,以防其他人需要它

    "rules": {
        "test":{
          ".write": "now + ' ' < root.child('date/Date').val() + ' '",
          ".read" : read
        }
    }
“规则”:{
“测试”:{
.write:“现在+”

因此,基本上我现在添加了(+'')以将其转换为字符串,并添加了相同的值以使两个字符串的长度相同。

安全规则可以读取Firebase数据库中的数据。如果将
now
变量与
root
变量组合使用,则可以对照时间戳进行检查

{
    "rules": {
        "test":{
          ".write": "now < root.child('date').child('Date').val()",
          ".read" : "now < root.child('date').child('Date').val()"
        }
    }
}
{
“规则”:{
“测试”:{
.write:“现在
然后,在代码中,您需要侦听cancel回调:

var ref = new Firebase("<my-firebase-app>/test");
ref.on('value', function(snap) {
  console.log(snap.val());
}, function(error) {
   // if permission is denied the error will log here
  console.error(error);
});
var ref=new Firebase(“/test”);
参考on(值),功能(捕捉){
console.log(snap.val());
},函数(错误){
//如果权限被拒绝,错误将记录在此处
控制台错误(error);
});

此外,在Firebase应用程序仪表板中使用模拟器应有助于测试规则:


再次感谢,你帮了我很大的忙,非常感谢。使用Console时是否不应用规则?当我使用Chrome控制台时,即使我将其设置为write:false,我仍然可以写入该位置。啊,你是在Firebase应用程序仪表板打开的情况下从控制台写入的。是的,因为您是管理员,所以这里不应用规则。Firebase应用程序仪表板是一个web应用程序,具有Firebase数据库的管理员权限。当您使用控制台并创建ref时,您将获得web应用程序的本地权限,即admin。尝试在匿名模式下访问数据或使用模拟器。只是为了让你知道它是如何运行的,更新了上面的问题。我认为一定有更好的解决办法,但这一办法暂时奏效了;)我在Firebase上工作,我可以告诉你这是最简单的解决方案。我的意思是比现在添加(+'')更好的方法,将其转换为字符串进行比较。