2017-12-26 3 views
0

Ich schreibe eine Android-App und ich möchte überprüfen, ob eine Zeichenfolge (wie die folgenden userCPF und userCRM) existiert, um doppelte Werte zu vermeiden. Ich habe nachgeforscht, aber es sieht so aus, dass ich nur Listener hinzufügen kann, wenn ich nur überprüfen möchte, ob eine ID existiert oder nicht.Überprüfen, ob eine Zeichenfolge in der gesamten Firebase-Datenbank existiert

Frage

Wie kann ich dies tun?

Im Folgenden sind meine ProfileActivity.java und UserInformation (Datenbankformat) -Klasse.

Zuerst ProfileActivity:

public class ProfileActivity extends AppCompatActivity implements View.OnClickListener { 

private FirebaseAuth mAuth; 

private TextView textView; 
private Button buttonLogout; 

private DatabaseReference databaseReference; 

private EditText editTextFName, editTextLName, editTextEmail, editTextCPF, editTextCRM; 
private Spinner spinnerState; 
private Button buttonSave; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_profile); 

    mAuth = FirebaseAuth.getInstance(); 

    //if user is not logged in 
    if (mAuth.getCurrentUser() == null) { 
     finish(); 
     startActivity(new Intent(this, MainActivity.class)); 
    } 

    databaseReference = FirebaseDatabase.getInstance().getReference(); 

    //initializing views 
    textView = (TextView) findViewById(R.id.textView); 
    editTextFName = (EditText) findViewById(R.id.editTextFName); 
    editTextLName = (EditText) findViewById(R.id.editTextLName); 
    editTextEmail = (EditText) findViewById(R.id.editTextEmail); 
    editTextCPF = (EditText) findViewById(R.id.editTextCPF); 
    editTextCRM = (EditText) findViewById(R.id.editTextCRM); 
    spinnerState = (Spinner) findViewById(R.id.spinnerState); 
    buttonSave = (Button) findViewById(R.id.buttonSave); 
    buttonLogout = (Button) findViewById(R.id.buttonLogout); 

    FirebaseUser user = mAuth.getCurrentUser(); 

    textView.setText("Bem Vindo(a) Dr. " + user.getEmail()); 

    editTextEmail.setText(user.getEmail()); 

    //adding listener to buttons 
    buttonLogout.setOnClickListener(this); 
    buttonSave.setOnClickListener(this); 
} 

private void saveUserInformation() { 
    String firstName = editTextFName.getText().toString().trim(); 
    String lastName = editTextLName.getText().toString().trim(); 
    String userEmail = editTextEmail.getText().toString(); 
    String userCPF = editTextCPF.getText().toString().trim(); 
    String userCRM = editTextCRM.getText().toString().trim(); 
    String crmState = spinnerState.getSelectedItem().toString(); 

    //checking if email and passwords are empty 
    if(TextUtils.isEmpty(firstName)){ 
     editTextFName.setError("Por favor, digite seu primeiro nome"); 
     editTextFName.requestFocus(); 
     return; 
    } 

    if(TextUtils.isEmpty(lastName)){ 
     editTextLName.setError("Por favor, digite seu sobrenome"); 
     editTextLName.requestFocus(); 
     return; 
    } 

    if(TextUtils.isEmpty(userEmail)){ 
     editTextEmail.setError("Por favor, digite seu e-mail"); 
     editTextEmail.requestFocus(); 
     return; 
    } 

    if(TextUtils.isEmpty(userCPF)){ 
     editTextCPF.setError("Por favor, digite seu CPF"); 
     editTextCPF.requestFocus(); 
     return; 
    } 

    if(TextUtils.isEmpty(userCRM)){ 
     editTextCRM.setError("Por favor, digite seu CRM"); 
     editTextCRM.requestFocus(); 
     return; 
    } 

    UserInformation userInformation = new UserInformation(firstName, lastName, userEmail, userCPF, crmState, userCRM); 


    FirebaseUser user = mAuth.getCurrentUser(); 
    databaseReference.child(user.getUid()).setValue(userInformation); 
    Toast.makeText(this, "Dados Salvos...", Toast.LENGTH_LONG).show(); 
    finish(); 
    startActivity(new Intent(this, BadgeActivity.class)); 

} 




@Override 
public void onClick(View view) { 
    //if logout button is pressed 
    if (view == buttonLogout) { 
     mAuth.signOut(); 
     finish(); 
     startActivity(new Intent(this, MainActivity.class)); 
    } 

    if (view == buttonSave) { 

     saveUserInformation(); 
    } 
} 

Dann UserInformation

public class UserInformation { 

public String firstName; 
public String lastName; 
public String userEmail; 
public String crmState; 
public String userCRM; 
public String userCPF; 

public UserInformation(){ 

} 

public UserInformation(String firstName, String lastName, String userEmail, String userCPF, String crmState, String userCRM) { 
    this.firstName = firstName; 
    this.lastName = lastName; 
    this.crmState = crmState; 
    this.userCRM = userCRM; 
    this.userCPF = userCPF; 
    this.userEmail = userEmail; 
} 

Antwort

1

Try this:

DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("UserInformation"); 
ref.orderByChild("userCRM").equalTo(CRM_value_here).addValueEventListener(new ValueEventListener(){ 
    @Override 
public void onDataChange(DataSnapshot dataSnapshot){ 
if(dataSnapshot.exists()){ 
    Toast.makeText(Activity_Name.this, "Stop!",Toast.LENGTH_LONG).show(); 
     return; 
} 
} 
    @Override 
    public void onCancelled(FirebaseError firebaseError) { 

    } 
}); 

Kann die oben tun, oder wenn Sie die ID des Benutzers verwenden als Schlüssel kann dies dann tun:

FirebaseUser currentuser=FirebaseAuth.getInstance().getCurrentUser(); 

ref.orderByKey().equalTo(currentuser.getUid()).addValueEventListener(new ValueEventListener(){ 

//like above 

    } 
+0

Hallo, Peter! danke für Ihre Antwort. –

+0

kein Problem! @MateusTrinconiCunha –

+0

Mein Problem ist, dass ich überprüfen muss, ob der Benutzer CPF oder userCRM bereits unter ANY anderen userUid im Ordner eingegeben wurde. Leider hat die Struktur, mit der du mir geholfen hast, noch nicht funktioniert. –

Verwandte Themen