java - 如果 firebase 中存在相同的值,如何创建条件

标签 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) {
    }
});

最佳答案

自己创建另一个函数,将数据推送到 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) {
    }
});

关于java - 如果 firebase 中存在相同的值,如何创建条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51660846/

相关文章:

java - 对 Date 对象进行空检查

java - 填充多维数组时 IndexOutOfBounds 异常

android - API 17 - Android 通知在不被点击的情况下启动 Activity

android - 错误:(191, 78)错误:在android中找不到符号变量ARGB_8888

android - 如何按 Intent 传递对象

ios - 如何搜索经过身份验证的用户 Firebase iOS Swift

java - 如何替换另一个jar文件中的jar?

java - 避免在 h :inputText 中显示默认的 int 值 0

firebase - 将域和子域指向同一个 firebase 应用程序

swift - 某些数据未从 Firebase 数据库 Swift 3 中读取