我将对象存储在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>;
答案 0 :(得分:0)
不幸的是,这是不可能的。 ServerValue.TIMESTAMP
唯一受支持的用途是将服务器时钟的确切值存储在该子进程中。这是一个令牌值,而不是确切的数字。在Firebase收到令牌并将其转换为数字之前,未知确切的数字。
您唯一的解决方法是要么使用后端执行写入,要么让客户端在写入后读取该值,然后将其加30 s,然后将其写回。