问题描述
我要检查Firebase数据库中是否已经存在总线号.
I want to check if the bus number already exists in the database of Firebase.
这是我的示例代码.我一直在搜索过去的日子,但找不到合适的代码来实现此目的.
Here's my sample code. I've been searching for the past days but I can't find the right code to do so.
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
...不起作用?我尝试测试一些吐司消息,但消息不会弹出.
Can somebody help me with this matter? Thanks in advance.Whether the if statement is correct or not, also my problem is why does the postRef.addListenerForSingleValueEvent
...doesn't work? I tried to test some toast message but the message won't pop out.
推荐答案
您的方法是错误的.
执行此操作dataSnapshot.child(busNum).exists()
时,它将在键部分为-kasajdh...
的位置查找busNum
.
When you are doing this dataSnapshot.child(busNum).exists()
, it's looking for the busNum
in the key section, where your keys are -kasajdh...
.
因此,您可以做的是获取iterable
,现在当您寻找data.child(busNum).exists()
与值有关
So instead what you can do is, get the iterable
, now when you look fordata.child(busNum).exists()
it relates to the value
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) {
}
});
这篇关于如何检查Firebase数据类Android中是否已存在值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!