android - 如何检查 Firebase 数据类 Android 中是否已经存在一个值

标签 android firebase firebase-realtime-database

我想检查 Firebase 的数据库中是否已经存在公交车号码。

这是我的示例代码。我过去几天一直在搜索,但找不到合适的代码。

ref = new Firebase(Config.FIREBASE_URL);
postRef = ref.child("BusNumber");

busNum = edtBus.getText().toString().trim();
route1 = route.trim();
seat = edtSeat.getText().toString().trim();

if (!busNum.isEmpty() && !route1.isEmpty() && !seat.isEmpty()) {
    postRef.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.child(busNum).exists()) {
                edtBus.setError("Bus number already exists.");
                edtBus.setText("");
            } else {
                busNumber = new BusNumber();
                busNumber.setBusNum(busNum);
                busNumber.setRoute(route1);
                busNumber.setNumSeat(seat);
                postRef.push().setValue(busNumber);
                edtBus.setText("");
                edtSeat.setText("");
                Toast.makeText(AddBusActivity.this, "Saving successful!", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {
            Toast.makeText(AddBusActivity.this, "Error", Toast.LENGTH_SHORT).show();
            Toast.makeText(AddBusActivity.this, firebaseError.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });

} else {
    Toast.makeText(AddBusActivity.this, "Please complete the information", Toast.LENGTH_SHORT).show();
}

有人可以帮我解决这个问题吗?提前致谢。 无论 if 语句是否正确,我的问题也是为什么 postRef.addListenerForSingleValueEvent... 不起作用?我尝试测试一些 toast 消息,但消息不会弹出。

here is my firebase database

最佳答案

你的做法是错误的。

当您执行此 dataSnapshot.child(busNum).exists() 时,它会在 key 部分寻找 busNum,您的 key 是 -kasajdh....

所以你可以做的是,获取 iterable,现在当你寻找 data.child(busNum).exists() 与值有关

   postRef.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                for(DataSnapshot data: dataSnapshot.getChildren()){
                    if (data.child(busNum).exists()) {
                        //do ur stuff
                    } else {
                       //do something if not exists
                    }
                  }
                }

                @Override
                public void onCancelled(FirebaseError firebaseError) {

                }
            });

关于android - 如何检查 Firebase 数据类 Android 中是否已经存在一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38948905/

相关文章:

android - 想从 firebase 数据库中检索唯一的卢比值?

android - 如何在标记上设置图像而图像存储在 Firebase 存储中

java - Android min3d 崩溃

firebase - 如何从 firestore 中删除每个集合

android - Android 上的 ListView 中未显示 Firebase 数据

javascript - 本地修改数据的 Firebase 同步 : handling errors & global status

java - Firebase Java Admin SDK 线程安全吗?

android - 将字符串从对话框 fragment 返回到 Activity

android - 用户是否可以在不安装您的应用程序的情况下通过 Firebase Auth 注册新帐户?

android - 将 flutter 升级到版本 3 后,我的现有项目未构建