Android 是否自动添加其他firebase数据库字段?

Android 是否自动添加其他firebase数据库字段?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我有一门书课 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 n

我有一门书课

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"
  }
}

添加了author字段,我不理解这一点

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

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

用这个替换类

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

用这个替换你的类

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

这意味着什么。它解决了这个问题?反射是一个Java属性,您可以在不知道方法或变量名称的情况下访问另一个类。Firebase使用反射检查正在上载的CALS。这就是为什么您应该使用standar POJO java类来实现这一点。另一个答案指向同一个方向。这意味着什么。它解决了这个问题?反射是一个Java属性,您可以在不知道方法或变量名称的情况下访问另一个类。Firebase使用反射检查正在上载的CALS。这就是为什么要使用standar POJO java类来实现这一点。