2017-11-17 158 views
0

我有一本書類作爲自動添加額外的firebase數據庫字段?

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

} 

而且我增添火力實時雲數據庫作爲

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

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

但是在火力檢測控制檯,其作爲

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

有未來添加作者字段,我不明白

回答

1

你有ap名爲「author」的ublic變量和名爲「getAuthorName」的公共getter。 Firebase反射正在使用兩者來在數據庫中創建數據。修復:使你的變量保持私密並保持getters,然後添加setter。

+0

這是什麼意思更換類。它解決了這個問題? – raxx

+0

反射是一個Java屬性,您可以在不知道方法或變量的名稱的情況下訪問另一個類。 Firebase使用反射來檢查報告正在上傳。這就是爲什麼你應該爲此使用標準的POJO java類。其他答案指向相同的方向。 – cutiko

1

與此

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

你能解釋爲什麼嗎?它的工作 – raxx

+0

你的問題解決了嗎? –

相關問題