java - 只有 Firebase 中的一些字段被传输到我在 Android Studio 中的代码
问题描述
我花了几个小时试图弄清楚为什么 Firestore 中文档中的某些字段不会转移到我的代码中。
你能帮我找出我的代码有什么问题以及我应该如何更改它以使其工作吗?
(是的,公交车号特意保存为字符串)
我试图使用 getValue 方法从 Firebase 读取数据,如下面的代码所示:
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("BusDrivers");
// Getting all of the registered bus drivers' information
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot datasnapshot) {
for (DataSnapshot snapshot : datasnapshot.getChildren()) {
BusDriver busDriver = snapshot.getValue(BusDriver.class);
busDrivers.add(busDriver);
}
}
但是,只有部分字段被传输到 busDriver 对象。当我打电话时busDriver.getDriverFirstName()
,我准确地得到了一个结果......
但是当我调用 busDriver.getAmBusRoute() 时,出于某种原因我得到了这个......
这里也是 BusDriver 类的代码。
public class BusDriver {
private final String busDriverID;
private final String amBusRoute;
private final String pmBusRoute;
private final String driverFirstName;
private final String driverMiddleName;
private final String driverLastName;
public BusDriver() {
this.busDriverID = "N/A";
this.amBusRoute = "N/A";
this.pmBusRoute = "N/A";
this.driverFirstName = "N/A";
this.driverMiddleName = "N/A";
this.driverLastName = "N/A";
}
public BusDriver(String busDriverID, String amBusRoute, String pmBusRoute, String driverFirstName, String driverMiddleName,
String driverLastName) {
this.busDriverID = busDriverID;
this.amBusRoute = amBusRoute;
this.pmBusRoute = pmBusRoute;
this.driverFirstName = driverFirstName;
this.driverMiddleName = driverMiddleName;
this.driverLastName = driverLastName;
}
public String getBusDriverID() { return busDriverID; }
public Object getAmBusRoute() { return amBusRoute; }
public Object getPmBusRoute() { return pmBusRoute; }
public String getDriverFirstName() { return driverFirstName; }
public String getDriverMiddleName() { return driverMiddleName; }
public String getDriverLastName() { return driverLastName; }
}
请帮我。谢谢!
解决方案
正如我在您的屏幕截图中看到的,您正在使用 Firestore,但您的代码尝试从实时数据库中读取数据,这是不正确的。要解决此问题,您必须将 Firestore 添加到您的项目中。为此,请查看有关如何开始使用 Cloud Firestore的官方文档。
在你这样做之后,要读取数据,你可以使用以下代码:
FirebaseFirestore db = FirebaseFirestore.getInstance();
CollectionReference busDriversRef = db.collection("BusDrivers");
busDriversRef..get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
BusDriver busDriver = document.toObject(BusDriver.class);
busDrivers.add(busDriver);
}
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});
推荐阅读
- python - ResultSet 对象没有属性“get”
- c# - 为什么 *DoesNotReturnAttribute* 没有按预期工作?
- python - 有没有一种很好的方法来检查 numpy 数组和火炬张量是否指向相同的基础数据?
- reactjs - 内部服务器错误和类型错误:无法解构“未定义”或“空”的属性“学期 1”
- python - 在 Keras 中使用 fit_generator
- python - 如何使用正则表达式提取 JSON 对象的值
- linux - 如何在文件的数学行中插入字符
- python - Python:将json加载转换为熊猫数据框
- java - 有没有办法从 Java 中的 FileDialog 获取目录路径?
- variables - 自定义变量不适用于 emacs 中的 setq