【发布时间】:2016-08-15 03:25:42
【问题描述】:
我想检查 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 消息,但消息不会弹出。
【问题讨论】:
-
您是否有任何 Firebase 规则设置阻止您读取数据库?也许在 onCanceled 中添加一个 Log 并打印出 firebase 错误(如果有)。
-
@linxy 是的,我已经做到了。但据我记忆。没有错误
-
找到解决办法了吗?
-
这是因为你没有使用回调函数和接口我也有和你一样的问题 for (datasnap shot /....) full 方法不起作用它只是给出是否为空值或空对象引用,或者您没有得到所需的值,请参阅我的问题的链接.. 一个好人通过给我链接来指导我.. 第一个链接帮助我使用回调和接口技巧。 [乳清你的代码 firebase 数据库没有工作点击这个超链接](stackoverflow.com/questions/51582992/…)
标签: android firebase firebase-realtime-database