2016-11-09 120 views
1

我已經在Firebase中創建了一個帳戶,並且我已經創建了一個名爲「Fieldglass」的項目。價值未插入Firebase數據庫

現在上單擊數據庫選項卡上的火力帳戶,我得到了一個名爲數據庫:fieldglass-aeca7

現在我要插入這裏面的值。我在OnCreate()函數中爲它寫了一個代碼。

final CountDownLatch sync = new CountDownLatch(1); 

     DatabaseReference db= FirebaseDatabase.getInstance().getReference("fieldglass-aeca7"); 
     String userId=db.push().getKey(); 
     User u=new User("shikher","[email protected]"); 

     try { 
      Thread.sleep(5000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     db.child(userId).setValue(u).addOnCompleteListener(new OnCompleteListener<Void>() { 
      @Override 
      public void onComplete(Task<Void> task) { 
       sync.countDown(); 

      } 
     }); 
     try{ 
      sync.await(); 

     } 

     catch (Exception e) 
     { 
      System.out.print("there is an exception here in sync.await()"); 
     } 

現在運行此代碼後,值不會插入控制檯的數據庫中。 如何將值插入Firebase數據庫?

用戶類是:

package com.example.hsports.galleryusingimageswitcher; /** 
* Created by I324671 on 11/7/2016. 
*/ 

import com.google.firebase.database.DataSnapshot; 
import com.google.firebase.database.DatabaseError; 
import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.FirebaseDatabase; 
import com.google.firebase.database.ValueEventListener; 




public class User { 

public String name; 
public String email; 

public User(){ 
} 
public User(String name,String email) 
{ 
    this.name=name; 
    this.email=email; 
} 

} 
+0

你確定應用程序被允許寫入數據庫嗎?如果您不確定,請發佈您的數據庫規則。 – Wilik

+0

{ 「規則」:{ 「.read 」:真實, 「 .WRITE」:真 }} 這些都是我在火力 –

+0

HM規則選項卡下指定我的數據庫規則。你可以發佈'用戶'類嗎? – Wilik

回答

1

你缺少了User模型類屬性的getter方法。

Read and Write Data on Android

傳遞一個自定義的Java對象,如果定義它有一個默認的構造函數,它沒有參數並具有公共的getter的屬性分配類。

public class User { 
    public String name; 
    public String email; 

    public User() {} 
    public User(String name,String email) { 
     this.name=name; 
     this.email=email; 
    } 
    public String getName() { 
     return this.name; 
    } 
    public String getEmail() { 
     return this.email; 
    } 
} 

這應該工作。 :)

+1

但在我的代碼中,我沒有使用getter方法,那麼這對我來說會如何工作? –

+0

@ shikher.mishra該類需要有公共getter方法,因此可以通過'setValue'方法分配屬性。 [閱讀更多](https://firebase.google.com/docs/database/android/read-and-write) – Wilik