我想检查 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 消息,但消息不会弹出。
最佳答案
你的做法是错误的。
当您执行此 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/