如何存储Firebase服务器时间戳加30秒?

时间:2020-06-15 22:12:56

标签: android firebase firebase-realtime-database

我将对象存储在Firebase实时数据库上。一个对象看起来像这样:

import com.google.firebase.database.ServerValue;

public class Message {

    private Object timestamp = ServerValue.TIMESTAMP;
    private String source = "client";
    private String req;
    private String ack = null;
    private int pos;

    Message(){};    // needed for Firebase when converting DataSnapshot to Message object

    Message(String req, int pos) {
        this.req = req;
        this.pos = pos;
    }

    public Object getTimestamp() {
        return timestamp;
    }

    public String getSource() {
        return source;
    }

    public String getReq() {
        return req;
    }

    public String getAck() {
        return ack;
    }

    public int getPos() {
        return pos;
    }

}

我还没有尝试过,尽管在将对象存储到Firebase时应该正确填充时间戳。

现在我的问题是:如何添加过期属性?到期时间等于TIMESTAMP加30秒,如下所示:

private Object expiration = ServerValue.TIMESTAMP + <30 seconds>;

1 个答案:

答案 0 :(得分:0)

不幸的是,这是不可能的。 ServerValue.TIMESTAMP唯一受支持的用途是将服务器时钟的确切值存储在该子进程中。这是一个令牌值,而不是确切的数字。在Firebase收到令牌并将其转换为数字之前,未知确切的数字。

您唯一的解决方法是要么使用后端执行写入,要么让客户端在写入后读取该值,然后将其加30 s,然后将其写回。