Java 如何检查firebase数据库中是否存在值?
我正在制作一个问答应用程序。用户可以喜欢一个问题。如果用户喜欢它,那么它将存储在firebase中的likedBy中。我一直在检查用户是否已经喜欢这个问题,如果喜欢,那么like按钮将是绿色的。但事实并非如此。当我再次点击“喜欢”按钮时,有两个人喜欢,他们的用户名相同。请帮忙Java 如何检查firebase数据库中是否存在值?,java,android,firebase,Java,Android,Firebase,我正在制作一个问答应用程序。用户可以喜欢一个问题。如果用户喜欢它,那么它将存储在firebase中的likedBy中。我一直在检查用户是否已经喜欢这个问题,如果喜欢,那么like按钮将是绿色的。但事实并非如此。当我再次点击“喜欢”按钮时,有两个人喜欢,他们的用户名相同。请帮忙 databaseReference.child(“问题”).addValueEventListener(新的ValueEventListener(){ @凌驾 public void onDataChange(@NonN
databaseReference.child(“问题”).addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot snapshot snapshot){
if(snapshot.exists()){
对于(DataSnapshot DataSnapshot:snapshot.getChildren()){
if(dataSnapshot.child(“问题”).getValue().toString().equals(问题)和&dataSnapshot.child(“askedBy”).getValue().toString().equals(用户名)
&&dataSnapshot.child(“likes”).getValue().toString().equals(likes)){
if(dataSnapshot.child(“likedBy”).hasChild(currentUser[0])){
喜欢=真实;
like.setImageResource(R.drawable.like_选中);
}否则{
喜欢=错误;
like.setImageResource(R.drawable.like\u未选中);
}
}
}
}
}
@凌驾
已取消公共void(@NonNull DatabaseError){
}
});
like.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
如果(喜欢){
databaseReference.child(“问题”).addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot snapshot snapshot){
if(snapshot.exists()){
对于(DataSnapshot DataSnapshot:snapshot.getChildren()){
if(dataSnapshot.child(“问题”).getValue().toString().equals(问题)和&dataSnapshot.child(“askedBy”).getValue().toString().equals(用户名)
&&dataSnapshot.child(“likes”).getValue().toString().equals(likes)){
dataSnapshot.getRef().child(“likedBy”).child(currentUser[0]).removeValue();
intlike=Integer.parseInt(likes)-1;
dataSnapshot.child(“likes”).getRef().setValue(like).addOnCompleteListener(新的OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
likes=Integer.toString(like);
numberOfLikes.setText(likes);
like.setImageResource(R.drawable.like\u未选中);
}
}
});
}
}
}
}
@凌驾
已取消公共void(@NonNull DatabaseError){
}
});
}否则{
databaseReference.child(“问题”).addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot snapshot snapshot){
if(snapshot.exists()){
对于(DataSnapshot DataSnapshot:snapshot.getChildren()){
if(dataSnapshot.child(“问题”).getValue().toString().equals(问题)和&dataSnapshot.child(“askedBy”).getValue().toString().equals(用户名)
&&dataSnapshot.child(“likes”).getValue().toString().equals(likes)){
int numberOfUsers=(int)dataSnapshot.child(“likedBy”).getChildrenCount()+1;
dataSnapshot.child(“likedBy”).child(String.valueOf(numberOfUsers)).getRef().setValue(currentUser[0]);
intlike=Integer.parseInt(likes)+1;
dataSnapshot.child(“likes”).getRef().setValue(like);
databaseReference.child(“用户”).addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot snapshot snapshot){
if(snapshot.exists()){
对于(DataSnapshot dataSnapshot1:snapshot.getChildren()){
if(dataSnapshot1.child(“用户名”).getValue().toString().equals(用户名)){
int points=Integer.parseInt(dataSnapshot1.child(“points”).getValue().toString())+5;
获得的点数+=5;
dataSnapshot1.child(“points”).getRef().setValue(points).addOnCompleteListener(新OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
likes=Integer.toString(like);
databaseReference.child("questions").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
if (dataSnapshot.child("question").getValue().toString().equals(question) && dataSnapshot.child("askedBy").getValue().toString().equals(username)
&& dataSnapshot.child("likes").getValue().toString().equals(likes)) {
if (dataSnapshot.child("likedBy").hasChild(currentUser[0])) {
liked = true;
like.setImageResource(R.drawable.like_selected);
} else {
liked = false;
like.setImageResource(R.drawable.like_not_selected);
}
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (liked) {
databaseReference.child("questions").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
if (dataSnapshot.child("question").getValue().toString().equals(question) && dataSnapshot.child("askedBy").getValue().toString().equals(username)
&& dataSnapshot.child("likes").getValue().toString().equals(likes)) {
dataSnapshot.getRef().child("likedBy").child(currentUser[0]).removeValue();
int liken = Integer.parseInt(likes) - 1;
dataSnapshot.child("likes").getRef().setValue(liken).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
likes = Integer.toString(liken);
numberOfLikes.setText(likes);
like.setImageResource(R.drawable.like_not_selected);
}
}
});
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
} else {
databaseReference.child("questions").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
if (dataSnapshot.child("question").getValue().toString().equals(question) && dataSnapshot.child("askedBy").getValue().toString().equals(username)
&& dataSnapshot.child("likes").getValue().toString().equals(likes)) {
int numberOfUsers = (int) dataSnapshot.child("likedBy").getChildrenCount() + 1;
dataSnapshot.child("likedBy").child(String.valueOf(numberOfUsers)).getRef().setValue(currentUser[0]);
int liken = Integer.parseInt(likes) + 1;
dataSnapshot.child("likes").getRef().setValue(liken);
databaseReference.child("users").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
for (DataSnapshot dataSnapshot1 : snapshot.getChildren()) {
if (dataSnapshot1.child("username").getValue().toString().equals(username)) {
int points = Integer.parseInt(dataSnapshot1.child("points").getValue().toString()) + 5;
numberOfPointsGained += 5;
dataSnapshot1.child("points").getRef().setValue(points).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
likes = Integer.toString(liken);
numberOfLikes.setText(likes);
like.setImageResource(R.drawable.like_selected);
leaderBoard();
}
}
});
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
}
});
public function onClickLikeBtn (Boolean like){
return !like;
}
ref.child("Users").orderByChild("IDorKEY").equalTo("nameORkeyID").once("value",snapshot => {
if (snapshot.exists()){
//Existed dont add or do something
}
});