android - 火力地堡数据库 : How to set default value (Timestamp) to field

标签 android firebase firebase-realtime-database

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

@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 设置一个默认值: enter image description here

有什么想法吗?

最佳答案

我在 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;
}
}

关于android - 火力地堡数据库 : How to set default value (Timestamp) to field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47789965/

相关文章:

database - 在 Firestore 中更新值时没有字段错误

javascript - Firebase 的云函数 - 使用 Promise 循环

火力地堡功能 : Support Global variable across functions

php - 带有来自服务器(php)的图像的Android Firebase推送通知在应用程序处于后台时未在通知中显示图像

android - 谷歌游戏控制台 : Package name of your Instant App APKs should be the same as your app's package name

android - 带有 Mvvmcross 的 Xamarin 表单选项卡式页面

java - Android相机预览回调缓冲区未填充: is always full of zeros

java - Firebase回调接口(interface)需要声明为final吗?

android - 如何访问firebase中的相​​关数据

android - 如何让 Espresso 等待由 firebase 调用触发的 Activity ?