Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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
如何在firebase-Javascript中保存负时间戳_Javascript_Firebase_Firebase Realtime Database - Fatal编程技术网

如何在firebase-Javascript中保存负时间戳

如何在firebase-Javascript中保存负时间戳,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,到处搜索,但找不到任何解决方案或答案。我可以使用以下代码获取时间戳: var timestamp = firebase.database.ServerValue.TIMESTAMP; 但我想存储负时间戳,以便进行排序。我怎么得到它 当我尝试将它与-1相乘时,它会给出一个错误,因为它是一个对象。如何使用?当数据集太大而无法反转客户端时,负时间戳非常有用 Firebase服务器时间戳是保存数据后转换为数字的对象。因此,您需要保存正时间戳,然后在初始推送后将其转换为负时间戳。下面是一个经过验证的工作

到处搜索,但找不到任何解决方案或答案。我可以使用以下代码获取时间戳:

var timestamp = firebase.database.ServerValue.TIMESTAMP;
但我想存储负时间戳,以便进行排序。我怎么得到它


当我尝试将它与-1相乘时,它会给出一个错误,因为它是一个对象。如何使用?

当数据集太大而无法反转客户端时,负时间戳非常有用

Firebase服务器时间戳是保存数据后转换为数字的对象。因此,您需要保存正时间戳,然后在初始推送后将其转换为负时间戳。下面是一个经过验证的工作示例

  let timestamp = firebase.database.ServerValue.TIMESTAMP
  const promise = firebase.database().ref().child('posts').push({ timestamp })
  const key = promise.key

  promise.then(_ => {
    const postRef = firebase.database().ref('/posts/' + key)
    postRef.once('value').then(function(snapshot) {
      timestamp = snapshot.val().timestamp * -1
      postRef.update({ timestamp })
    });
  })

为什么需要设置负时间戳?我认为修改时间戳不是一个好的做法,因为它们故意难以访问,并且表示用于内部计算的值。如果您需要对某些元素进行优先级排序,为什么不使用优先级功能?或者添加一个不是时间戳的字段进行排序?@日志开发人员可能希望这样做的一个常见原因是以时间戳的降序获得结果。所有按顺序排列的Firebase数据库查询都会以升序返回结果,因此,如果您想以降序显示结果,则需要反转客户端或保留反转属性。为什么不获取结果数组并将其反转呢?array.reverse()应该可以做到这一点。我没有意识到firebase没有办法逆转退货订单,所以我知道你为什么要这么做,我仍然不确定这是解决问题的正确方法。我有一个Angular中负时间戳的完整示例,但即使使用不同的框架,设计模式也应该很有用: