在自定义对象 Firebase Android 中获取引用和密钥 [英] Obtaining the reference and key in Custom Object Firebase Android

查看:18
本文介绍了在自定义对象 Firebase Android 中获取引用和密钥的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望将每个特定对象的 dataSnapshot 和键的引用传递到自定义消息"对象中.

I'm looking to pass the reference of the dataSnapshot and key of each specific object into a custom 'Message' object.

我尝试在 Message.class 中使用键字符串键",但它似乎返回空值.

I've tried using the key 'String key' within the Message.class but it appears to come back null.

这是我的 Message 对象当前的状态:

Here is how my Message object currently is:

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 文档中没有看到示例,而且在更新之前我使用的是旧版 Firebase".

Any ideas, how I properly pass the dataSnapshot.getKey() String to the custom object? I don't see an example on the Firebase docs, and to be clear I'm using the "legacy Firebase", before they updated.

推荐答案

当您从 DataSnapshot 获得 Message 实例时,您可能会:

When you get a Message instance from a DataSnapshot, you are likely doing:

Message message = snapshot.getValue(Message.class)

由于这是从 getValue() 开始的,所以消息将不包含 DataSnapshot 的键.

Since this is starting from getValue(), the message will not contain the key of the DataSnapshot.

您可以做的是阅读Message后自己设置密钥:

What you can do is set the key yourself after reading the Message:

Message message = snapshot.getValue(Message.class);
message.setKey(snapshot.getKey());

在这种情况下,您需要将 getKey() 标记为 @JsonIgnore,以确保 Jackson 尝试自动填充或序列化它.

You'll want to mark the getKey() as @JsonIgnore in that case, to ensure that Jackson tries to auto-populate or serialize it.

这篇关于在自定义对象 Firebase Android 中获取引用和密钥的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆