【问题标题】:Firebase Database: How to set default value (Timestamp) to fieldFirebase 数据库:如何将默认值(时间戳)设置为字段
【发布时间】:2017-12-13 09:50:16
【问题描述】:

您好,我正在使用 Firebase 实时数据库开始一个新的 Android 项目。 我的问题是当我创建一条新消息时,我输入了created_at = ServerValue.TIMESTAMP,它是Map<String,String>。当我获取一条消息时,我收到错误解析,告诉我created_atlong,我将它放在我的模型中的地图中。我的代码如下:

@IgnoreExtraProperties
public class Message implements Serializable 
{
@SerializedName("message_id")
@Expose
private String message_id;
@SerializedName("value")
@Expose
private String value;
@SerializedName("sender")
@Expose
private User sender;
@SerializedName("destination")
@Expose
private User destination;
@SerializedName("chatRoom")
@Expose
private ChatRoom chatRoom;
@SerializedName("created_at")
@Expose
private Map<String,String> created_at;
}

还有我添加新消息的代码:

String idM = databaseReference.push().getKey();                  
Message m = new Message(idM, message, sender, receiver, chatRoom, ServerValue.TIMESSTAMP);
databaseReference.child(idM).setValue(m);

现在我想像 MySql 一样为 created_at 设置一个默认值:

有什么想法吗?

【问题讨论】:

  • 查看answer
  • 谢谢我去试试
  • 感谢@Lucky,你拯救了我的一天

标签: android firebase firebase-realtime-database


【解决方案1】:

我在 Lucky 的帮助下解决了这个问题。所以解决方案是:

@IgnoreExtraProperties
public class Message implements Serializable {
@SerializedName("message_id")
@Expose
private String message_id;
@SerializedName("value")
@Expose
private String value;
@SerializedName("sender")
@Expose
private User sender;
@SerializedName("destination")
@Expose
private User destination;
@SerializedName("chatRoom")
@Expose
private ChatRoom chatRoom;
@SerializedName("created_at")
@Expose
private HashMap<String, Object> created_at;

public Message() {
}

public Message(String message_id, String value, User sender, User destination, ChatRoom chatRoom) {
    this.message_id = message_id;
    this.value = value;
    this.sender = sender;
    this.destination = destination;
    this.chatRoom = chatRoom;
    this.created_at = new HashMap<>();
    this.created_at.put("date", ServerValue.TIMESTAMP);
}

public String getMessage_id() {
    return message_id;
}

public void setMessage_id(String message_id) {
    this.message_id = message_id;
}

public String getValue() {
    return value;
}

public void setValue(String value) {
    this.value = value;
}

public User getSender() {
    return sender;
}

public void setSender(User sender) {
    this.sender = sender;
}

public User getDestination() {
    return destination;
}

public void setDestination(User destination) {
    this.destination = destination;
}

public ChatRoom getChatRoom() {
    return chatRoom;
}

public void setChatRoom(ChatRoom chatRoom) {
    this.chatRoom = chatRoom;
}

public HashMap<String, Object> getCreated_at() {
    if (created_at != null) {
        return created_at;
    }
    //Otherwise make a new object set to ServerValue.TIMESTAMP
    HashMap<String, Object> dateCreatedObj = new HashMap<String, Object>();
    dateCreatedObj.put("date", ServerValue.TIMESTAMP);
    return dateCreatedObj;

}
@Exclude
public long getDateCreatedLong() {
    return (long)created_at.get("date");
}
public void setCreated_at(HashMap<String, Object> created_at) {
    this.created_at = created_at;
}
}

【讨论】:

    猜你喜欢
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    相关资源
    最近更新 更多