我在用firebase。我想为我的申请检查重复的数据。目前我允许用户输入姓名和电子邮件。但如果用户第二次输入相同的名称和电子邮件,它也会被添加到数据库中。
如何解决这个问题
这是我的代码:

package com.example.zaid_pc.mpd2;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

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 tournament extends AppCompatActivity {

private EditText etTournament;
private EditText emailTournament;
private DatabaseReference mDatabaseRefernce;
Button btnTournament;



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

etTournament = (EditText)findViewById(R.id.etTournament);
emailTournament = (EditText)findViewById(R.id.emailTournament);
btnTournament = (Button)findViewById(R.id.btnTournament);

mDatabaseRefernce = FirebaseDatabase.getInstance().getReference().child("People Registered");

 btnTournament.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {



  final String name = etTournament.getText().toString().trim();
  final String email = emailTournament.getText().toString().trim();

  //mDatabaseRefernce.child("Name").setValue(name);
  //mDatabaseRefernce.child("Email").setValue(email);



final DatabaseReference peopleRegisered = mDatabaseRefernce.push();
peopleRegisered.child("Name").setValue(name);
peopleRegisered.child("Email").setValue(email);



Toast.makeText(tournament.this, "You will be notified via email", Toast.LENGTH_LONG).show();

finish();




        }
    });


}

}

最佳答案

在将数据推送到数据库之前,首先检查数据库是否存在数据
从以下代码中检查用户名是否存在

DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Query query = reference.child("issue").orderByChild("id").equalTo(0);
query.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            // dataSnapshot is the "issue" node with all children with id 0
            for (DataSnapshot issue : dataSnapshot.getChildren()) {
                // do something with the individual "issues"
            }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

根据需要修改此代码
参考文献
Firebase querying data

08-18 05:24
查看更多