推动未来过去事件的方法

时间:2014-09-18 05:27:53

标签: javascript firebase

我想在过去或将来设置具有时间戳优先级的数据,但不是在当前日期。然后能够使用endAt和StartAt查询特定日期(365天)

push方法非常适合为数据设置唯一ID并管理订单。是否有任何方法可以在过去或将来为时间戳生成类似push()方法的“唯一PushId”?

1 个答案:

答案 0 :(得分:1)

您可以尝试创建类似于推送的唯一ID,但是当Firebase中有内置工具来订购数据时,这似乎可以获得很少的收益。最简单的答案是使用服务器时间戳为每条记录设置优先级。

ref.push({ ...data..., ".priority": Firebase.ServerValue.TIMESTAMP });

要在将来或过去设置一个,请手动指定时间戳。

ref.push({ ...data..., ".priority": timeInTheFuture });

.info/serverTimeOffset在此处处理延迟也很有帮助。

要创建推送ID,您可以执行类似以下操作:

  1. 获取当前时间戳并将其填充到固定长度(即16个字符)
  2. 附加一系列随机数字,例如随机数或散列,也填充到固定长度
  3. 您的参赛作品现在看起来像这样:000128198239:KHFDBWYBEFIWFE
  4. 您现在拥有基于时间戳的按字典顺序排序的ID,这是唯一的
  5. 这是一个有用的discussion on sorting numbers lexicographically