2017-08-25 67 views
1

到处搜索但找不到任何解决方案或答案。我可以使用下面的代码获得时间戳:如何获取负时间戳以保存在firebase中 - Javascript

var timestamp = firebase.database.ServerValue.TIMESTAMP; 

但我想存储排序目的的负时间戳。我如何得到它?

当我试图乘以它与-1它给NaN错误,因为它是一个对象。怎么样?

+0

为什么你需要设置负时间戳?我不认为修改Timestamp是一个很好的做法,因为它们故意难以访问并且代表用于内部计算的值。如果您需要优先考虑某些元素,为什么不使用优先级功能?或者添加一个字段进行排序,不是时间戳? – TheCog

+1

@TheCog开发人员可能想要的一个常见原因是以时间戳的降序获得结果。所有订购的Firebase数据库查询都会按升序返回结果,因此如果您想以降序显示它们,则需要反转客户端或保留反转属性。 –

+0

为什么不把你的结果数组,然后只是扭转它呢? array.reverse()应该做的伎俩。我没有意识到firebase没有办法扭转退货顺序,所以我可以看到为什么你想这样做,我仍然不确定它是否是解决问题的正确方法。 – TheCog

回答

3

当数据集太大而无法反向客户端时,负时间戳很有用。

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 }) 
    }); 
    })