如果Firebase中的值相同,如何创建条件

时间:2018-08-02 19:25:55

标签: java android firebase firebase-realtime-database

如何查看子项中是否有相等的值,如果存在则不保存。

我尝试在这里执行此操作,但没有成功: How can I check if a value exists already in a Firebase data class Android

enter image description here

FirebaseAuth autenticacao = ConfiguracaoFirebase.getFirebaseAutenticacao();
final String idUsuario = CustomBase64.codificarBase64(autenticacao.getCurrentUser().getEmail());
DatabaseReference firebase = ConfiguracaoFirebase.getFirebaseDatabase().child("historico").child(idUsuario);
firebase.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.hasChild("id")) {
           Toast.makeText(getActivity(), "Exist", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(getActivity(), "No Exist", Toast.LENGTH_LONG).show();

        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    }
});

2 个答案:

答案 0 :(得分:2)

创建一个自己的函数,该函数将数据推送到firebase并从侦听器内部调用它。 (在此示例中,创建函数pushValueToFirebase

FirebaseAuth autenticacao = ConfiguracaoFirebase.getFirebaseAutenticacao();
final String idUsuario = CustomBase64.codificarBase64(autenticacao.getCurrentUser().getEmail());
DatabaseReference firebase = ConfiguracaoFirebase.getFirebaseDatabase().child("historico");
firebase.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        Boolean exists = false;
        for (DataSnapshot child : dataSnapshot.getChildren()) {
            if (child.getKey().equals(idUsario) {
                exists = true;
            }
        }
        if (!exists) {
             //Your code here to push idUsario
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    }
});

答案 1 :(得分:1)

尝试一下:

FirebaseAuth autenticacao = ConfiguracaoFirebase.getFirebaseAutenticacao();
                    final String idUsuario = CustomBase64.codificarBase64(autenticacao.getCurrentUser().getEmail());
                    DatabaseReference firebase = ConfiguracaoFirebase.getFirebaseDatabase().child("historico").child(idUsuario).child("id");
                    firebase.addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            if (dataSnapshot.exists()) {
                               Toast.makeText(getActivity(), "Exist", Toast.LENGTH_LONG).show();
                            } else {
                                Toast.makeText(getActivity(), "No Exist", Toast.LENGTH_LONG).show();

                            }
                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {
                        }
                    });

将子项id添加到以上child("historico").child(idUsuario).child("id")的引用中,然后使用exists()检查此dataSnapshot是否在您的数据库中。