我希望将每个特定对象的dataSnapshot和密钥的引用传递给自定义的消息'对象
我已尝试使用密钥'字符串键'在Message.class中,它似乎返回null。
以下是我的Message对象的当前状态:
public class Message {
private String key;
private String sender_id;
private String sender_username;
private String receiver_username;
private String receiver_id;
private String chat_id;
private String message;
private Firebase ref;
private double createdAt;
private boolean read;
public Message() {
// empty default constructor, necessary for Firebase to be able to deserialize messages
}
public String getKey() { return key; }
public String getSender_id() { return sender_id; }
public String getSender_username() { return sender_username; }
public String getReceiver_username() { return receiver_username; }
public String getReceiver_id() { return receiver_id; }
public String getChat_id() { return chat_id; }
public String getMessage() { return message; }
public Firebase getRef() { return ref; }
public double getCreatedAt() { return createdAt; }
public boolean getRead() { return read; }
}
任何想法,我如何正确地将dataSnapshot.getKey()字符串传递给自定义对象?我没有在Firebase文档中看到一个示例,并且要清楚我在更新之前使用了#34;传统Firebase&#34 ;.
答案 0 :(得分:5)
当您从Message
获得DataSnapshot
个实例时,您可能会这样做:
Message message = snapshot.getValue(Message.class)
由于这是从getValue()
开始的,因此该邮件不会包含DataSnapshot
的密钥。
您可以做的是在阅读Message
:
Message message = snapshot.getValue(Message.class);
message.setKey(snapshot.getKey());
在这种情况下,您需要将getKey()
标记为@JsonIgnore
,以确保杰克逊尝试自动填充或序列化它。
答案 1 :(得分:1)
我最终添加了一个静态方法来从DataSnapshot
创建对象:
public static Message FromSnapshot(DataSnapshot snapshot)
{
Message msg = snapshot.getValue(Message.class);
msg.setKey(snapshot.getKey());
return msg;
}