【问题标题】:Android Firebase negative ServerValue.TIMESTAMP for ordering用于订购的 Android Firebase 负 ServerValue.TIMESTAMP
【发布时间】:2018-04-10 03:15:53
【问题描述】:

我在 Firebase 中使用 ServerValue.TIMESTAMP 进行查询排序。我将模型类中的时间戳设置为 dat,例如 1494325636954。

public Attendance(String usico) {
    this.usico = usico;

    HashMap<String, Object> datsObj = new HashMap<String, Object>();
    datsObj.put("date", ServerValue.TIMESTAMP);
    this.dats = datsObj;

}

如何将 datt 设置为负 ServerValue.TIMESTAMP,例如 -1494325636954?

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    您可以创建一个 Firebase 函数来将值更新为负数,同时保持服务器准确的时间戳。

    exports.makeNegativeTimestamp = functions.database.ref('/posts/{postID}/date').onWrite(event => {
        // get the timestamp from the DeltaSnapshot
        const timestamp = event.data.val();
        // ensure that the timestamp is a number
        if (isNaN(timestamp)) { return; }
        // only make negative if it's currently positive
        if (timestamp >= 0) {
            // returns a promise
            return event.data.adminRef.set(timestamp * -1);
        }
    });
    

    【讨论】:

    • 警告:写入同一位置将触发函数两次。 (第一次写入正值。第二次写入负值,但是第二次不会写入,但这是对函数触发的浪费)。更好的选择:为负时间戳使用单独的位置。
    • @RamizAnsari 是的,这可能是一种更好的技术(取决于您想要的配置),因为它允许您同时保留正负时间戳进行查询。
    【解决方案2】:

    在其他情况下使用 timeStamp,但是当涉及到 firebase 时,您不需要全力以赴将 timeStamp 转换为负数以进行排序,我的方式是 每当添加孩子时(在孩子的内部属性)然后将其用作排序方法,如果您只关心顺序,这将简化很多时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 2018-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      相关资源
      最近更新 更多