使用'现在'

时间:2017-05-03 20:07:20

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

如果字段timstamp尚未通过,我有一个Firebase安全规则试图允许写入,但是应该允许修改,直到时间超过时间戳数据字段中设置的时间。

"tips": {
    ".read": true,
    "$user_id": {
    "tips": {
      "$game_id": {
      ".write": "root.child('/games/' + $game_id + '/timestamp/').val() > now"
      }
    } 
  }

在尝试使此规则生效时,我有2个示例时间戳字段:

timestamp: 1593840696 
timestamp: 1393840696

虽然我没有验证现在'现在'我理解它是纪元时间,当前日期/时间大约是1493840696.当写入Firebase时,我希望第一个条目能够通过更新获得成功(它的时间戳是'现在'时间)和第二个失败,因为它是在过去。

我所看到的是,这条规则是否都不允许更新记录?如果我更改大于'>'小于'小于'他们都工作。奇怪?这似乎是现在'的价值。可能大于1593840696。

".write": "root.child('/games/' + $game_id + '/timestamp/').val() < now"

&#39;现在&#39;的价值是什么?在这种背景下?有关如何通过/调试并实现所需时间戳保护的任何建议?基本上需要保护/允许数据更改,直到时间戳字段过去为止。

我无法启用此规则来触发和保护数据,因此我们非常感谢您提供帮助。

感谢您的回复。

1 个答案:

答案 0 :(得分:0)

Firebase数据库自纪元以来以毫秒存储时间戳。获取此类值的一种简单方法是使用此代码段中的JavaScript Date.now()

console.log(Date.now());

当我写这个时,值是:

1493869428756

为了进行比较,您的最高价值是:

1593840696

所以你好像从纪元开始计算,而不是几毫秒。