如果字段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;的价值是什么?在这种背景下?有关如何通过/调试并实现所需时间戳保护的任何建议?基本上需要保护/允许数据更改,直到时间戳字段过去为止。
我无法启用此规则来触发和保护数据,因此我们非常感谢您提供帮助。
感谢您的回复。
答案 0 :(得分:0)
Firebase数据库自纪元以来以毫秒存储时间戳。获取此类值的一种简单方法是使用此代码段中的JavaScript Date.now()
:
console.log(Date.now());
当我写这个时,值是:
1493869428756
为了进行比较,您的最高价值是:
1593840696
所以你好像从纪元开始计算秒,而不是几毫秒。