android - 如何检查 Firebase 中的现有数据?

标签 android firebase firebase-realtime-database kotlin

enter image description here

上面是我的 firebase 节点树。 这是我的代码:

private fun attemptAdd(){
    var focus: View? = null
    var cancel: Boolean = false
    var prefix: String  = prePrefView.text.toString() + prefText.text.toString()
    var sp: SimPrefix

    //checks for the length of the input
    if(prefText.length()<2){
        prefText.error = "invalid length"
        cancel = true
        focus = prefText
    }

    mDatabaseReference.child("simnumbers")
            .orderByChild("simPref")
            .equalTo(prefix)
            .addListenerForSingleValueEvent(object : ValueEventListener{
                override fun onDataChange(dataSnapshot: DataSnapshot) {
                    dataSnapshot.children.forEach {
                        sp = it.getValue(SimPrefix::class.java)!!
                        if(sp.simCard.equals(prefix)){ //checks if there is already a node with the same data
                            prefText.error = "already exists"
                            cancel = true
                            focus = prefText
                        }
                    }
                }

                override fun onCancelled(p0: DatabaseError?) {

                }
            })

    if(cancel){
        focus?.requestFocus()
    }
    else{ //if all is valid, proceed to the next method.
        addPrefix()
    }
}

我在这里假设它似乎没有进入监听器,因为它总是 继续下一个方法,允许用户输入相同的现有数据。

最佳答案

我提供了 java 代码,您可以将其更改为 kotlin,并将您的条件放入 onDatachange 方法中。

     Query query1=reference.child(reference.getKey()).child("simnumbers").orderByChild("simPref").equalTo(prefix);
    query1.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            // here place your condition
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

关于android - 如何检查 Firebase 中的现有数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50128421/

相关文章:

android - 显示 BottomSheetDIalogFragment 时如何禁用应用程序变暗?

android - Firebase 检索子 Android

android - 没有工作数据连接的谷歌云消息传递

android - Gradle 和本地 AAR 依赖项之间的 APK 大小是否存在差异?

android - 如何将中继服务器集成到正在运行的 SUP Android 项目中?

java:我想从内部类返回快照键但得到空变量

angular - 使用社交登录将 Firebase 用户添加到用户数据库?

node.js - 无法从 nodejs 上传到谷歌云或 firebase 存储桶

dart - 观察列表和 map 以及Firebase,我的天哪。我该如何改善这种困惑状况?

ios - 访问 Firebase IOS 数据更改并通知