【问题标题】:Additional firebase database field being added automatically?自动添加额外的firebase数据库字段?
【发布时间】:2017-11-18 05:42:25
【问题描述】:

我有一本书课

public class Books {

    public String bookName;
    public String author;
    public String copies;

    public Books() {
        // Default constructor required for calls to DataSnapshot.getValue(User.class)
    }

    public Books(String name, String author, String copies) {
        this.bookName = name;
        this.author = author;
        this.copies = copies;
    }

    public String getBookName() {
        return bookName;
    }

    public String getAuthorName() {
        return author;
    }


    public String getCopies() {
        return copies;
    }

}

我正在添加到 firebase 实时云数据库

mDatabase = FirebaseDatabase.getInstance("https://cmpe-2b339.firebaseio.com").getReference();

Books book = new Books(bookName,author,copies);
                    mDatabase.push().setValue(book);

然而在firebase concole中,它的到来

{
  "-KzAt3eHDBtD7gFvLIbn" : {
    "author" : "J",
    "authorName" : "J",
    "bookName" : "Hi",
    "copies" : "5"
  }
}

添加了作者字段,我不明白

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    您有一个名为“author”的公共变量和一个名为“getAuthorName”的公共 getter。 Firebase 反射使用两者在数据库中创建数据。修复:将变量设为私有并保留 getter,然后添加 setter。

    【讨论】:

    • 这是什么意思。它解决了问题?
    • Reflection 是一个 Java 属性,您可以在其中访问另一个类,而无需知道方法或变量的名称。 Firebase 使用反射来检查正在上传的课程。这就是为什么你应该为此使用标准 POJO java 类。另一个答案指向同一个方向。
    【解决方案2】:

    用这个替换你的类

    public class Books {
    private String bookName;
    private String author;
    private String copies;
    
    public Books () {
    
    }
    
    public Books(String bookName, String author, String copies) {
        this.bookName = bookName;
        this.author = author;
        this.copies = copies;
    }
    
    public String getBookName() {
        return bookName;
    }
    
    public void setBookName(String bookName) {
        this.bookName = bookName;
    }
    
    public String getAuthor() {
        return author;
    }
    
    public void setAuthor(String author) {
        this.author = author;
    }
    
    public String getCopies() {
        return copies;
    }
    
    public void setCopies(String copies) {
        this.copies = copies;
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-15
      • 2020-05-17
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      • 2017-09-08
      • 1970-01-01
      相关资源
      最近更新 更多