2017-08-01 59 views
-4

我希望能夠複製uid(圖中藍色下劃線)並將其與當前用戶的uid進行比較。而且,只有在同一個uid下沒有數據時才寫入數據庫。這是爲了讓每個用戶只上傳一次數據。此代碼中的Firebase數據庫有什麼問題?

Link to the database screenshot

buttonSubmit.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     if (mDatabaseReference.child("drivers").child(userid).toString() != userid || mDatabaseReference.child("parents").child(userid).toString() != useremail) { 
      if (!radiobutton1.isChecked() && !radiobutton2.isChecked()) { 
       Toast.makeText(LoggedinActivity.this, "Please select either Driver or Parent", Toast.LENGTH_LONG).show(); 
      } else if (radiogroup.getCheckedRadioButtonId() == radiobutton1.getId()) { 
       typestring = "driver"; 
       Users users = new Users(useremail, editText.getText().toString(), typestring); 
       mDatabaseReference.child("drivers").child(userid).setValue(users); 
      } else if (radiogroup.getCheckedRadioButtonId() == radiobutton2.getId()) { 
       typestring = "parent"; 
       Users users = new Users(useremail, editText.getText().toString(), typestring); 
       mDatabaseReference.child("parents").child(userid).setValue(users); 
      } 
     } 
     else { 
      Toast.makeText(LoggedinActivity.this, "Information already submitted", Toast.LENGTH_LONG).show(); 
     }  
    } 
}); 
+3

這段代碼有什麼問題? –

+1

你沒有告訴我們你的問題是什麼 - 這意味着我們無法幫助你。 –

+0

如果當前用戶的uid下已有數據,則不應該添加數據。但是,如果在當前用戶的uid下已經有一個數據,它會替換數據。它不應該這樣做 –

回答

0

您需要更改這一行代碼:

mDatabaseReference.child("drivers").child(userid).toString() != userid || mDatabaseReference.child("parents").child(userid).toString() != useremail) { 

mDatabaseReference.child("drivers").child(userid).getRef().toString() != userid || mDatabaseReference.child("parents").getRef().child(userid).toString() != useremail) { 

正如你可能看到的,我已經添加了getRef()方法真正得到參考資料。

希望它有幫助。

+0

讓我試試這段代碼。 –

+0

抱歉,該代碼無效。現在正在做的是,如果我在edittext中更改了名稱,它會上傳數據。並且,它能夠將數據上傳到驅動器部分和父部分。我希望它能夠只向驅動程序或父母上傳一次 –

+0

然後相應地更改邏輯。記住,'getRef()'方法是強制性的。 –