【问题标题】:Wrong tree names inserted with Firebase Insert Operation [duplicate]使用 Firebase 插入操作插入的树名称错误 [重复]
【发布时间】:2019-04-22 10:18:40
【问题描述】:

我正在尝试将一些用户数据插入 Firebase 数据库,并且我已成功插入一些记录。但是,我有一个小问题,即在某些 android 设备上插入操作无法正常工作,并为名为 a、b、c 的用户数据创建树/节点,而不是自定义键。

我已经实现了将数据插入 Firebase 的所有帮助程序和接口。

我添加了用于插入数据的用户模型类。

public class User {
    public String uid;
    public String email;
    public String userRole;
    public String firebaseToken;

    public User(){

    }

    public String getEmail() {
        return email;
    }

    public String getFirebaseToken() {
        return firebaseToken;
    }

    public String getUid() {
        return uid;
    }

    public String getUserRole() {
        return userRole;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setFirebaseToken(String firebaseToken) {
        this.firebaseToken = firebaseToken;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public void setUserRole(String userRole) {
        this.userRole = userRole;
    }
    public User(String uid,String email,String userRole,String firebaseToken)
    {
        this.uid = uid;
        this.firebaseToken = firebaseToken;
        this.email = email;
        this.userRole = userRole;
    }
}

User user = new User(firebaseUser.getUid(),
                firebaseUser.getEmail(),
                userRole,
                new SharedPrefUtil(context).getString(Constants.ARG_FIREBASE_TOKEN));
        database.child(Constants.ARG_USERS)
                .child(firebaseUser.getUid())
                .setValue(user)
                .addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            mOnUserDatabaseListener.onSuccess("User Added Successfully");
                        } else {
                            mOnUserDatabaseListener.onFailure("Unable To Add User");
                        }
                    }
                });

【问题讨论】:

  • 您很可能已经向这些用户发送了一个在您的某些数据类上运行 proguard 的 APK。确保您在从数据库读取/写入数据库的任何 POJO 类上禁用了 proguard。见stackoverflow.com/questions/50292125/…
  • @FrankvanPuffelen 感谢您提供的信息。我将尝试使用所需的 pro-guard 规则重新生成 apk。如果它工作正常,绝对是一个upwote

标签: android firebase firebase-realtime-database


【解决方案1】:

使用@PropertyName注解。这标志着序列化时要重命名的字段。

【讨论】:

  • 我在一些安卓设备上遇到了这个问题。
  • 是的,也许使用注释可以解决您的问题。您需要做的就是在属性上使用此注释并给出名称。
  • 在哪里使用这个注解
  • 您必须在 POJO 类中的属性的 getter 和 setter 上使用该注释,将您的属性设为 Private 并在 getter 和 setter 上给出注释,如下所示。 @PropertyName("tree-name").
猜你喜欢
  • 1970-01-01
  • 2014-04-26
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
  • 2015-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多