我试图在节点panadol和profinal中获取这些值。但它不起作用。我成功地得到了日期。这是我的密码
for(final String id: MedicinesListActivity.orderIdsList){
//get the date of the order
DatabaseReference dateReference = FirebaseDatabase.getInstance()
.getReference("Orders").child(id);
dateReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//date
String date = dataSnapshot.child("date").getValue(String.class);
Log.i("Date", date);
//loop through all the products in the specific order id
for(DataSnapshot s : dataSnapshot.child(MedicinesListActivity.userId).child("panadol").getChildren()){
Order order = s.getValue(Order.class);
Log.i("Item_Name", ""+ order.getName());
}
}
});
}
MedicineListActivity.orderIds-
似乎在每个用户的节点下,都有一个命名产品的列表(panadol,profint)。您的代码查找一个命名的产品panadol
在该列表中的dataSnapshot.child(MedicinesListActivity.userId). child("panadol")
:
//loop through all the products in the specific order id
for(DataSnapshot s : dataSnapshot.child(MedicinesListActivity.userId).child("panadol").getChildren()){
Order order = s.getValue(Order.class);
Log.i("Item_Name", ""+ order.getName());
}
由于您随后迭代了panadol
的子节点,因此您的s
快照引用了panadol
的各个属性:name
和orderQuantity
。但是您的代码似乎试图将这些属性中的每一个映射到一个完整的Order
对象,这是行不通的。
您有两个选择:
>
显示单个属性,而不使用Order
类:
for(DataSnapshot propSnapshot: dataSnapshot.child(MedicinesListActivity.userId).child("panadol").getChildren()){
Log.i("Item_Name", propSnapshot.getKey() + "="+ propSnapshot.getValue());
}
不要使用循环,而是以顺序
对象获取产品及其属性:
for(DataSnapshot propSnapshot: dataSnapshot.child(MedicinesListActivity.userId).getChildren()){
Order order = s.getValue(Order.class);
Log.i("Item_Name", propSnapshot.getKey() + "="+ propSnapshot.getValue());
}
要解决此问题,请使用以下代码行:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Orders").child(id).child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String name = ds.child("name").getValue(String.class);
String orderQuantity = ds.child("orderQuantity").getValue(String.class);
Log.d("TAG", name + "/" + orderQuantity);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);
logcat中的输出将是:
panadol/3.0
profinal/2.0
或者使用命令
类:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Orders").child(id).child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
Order order = ds.getValue(Order.class);
Log.d("TAG", ds.getName() + "/" + ds.getOrderQuantity);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);
结果是一样的。
在这两种情况下,必须使用引用中的所有节点名称才能显示该数据。
UCAEXC::4.0.3用户缺乏权限或找不到对象[我的表的名称] 我想从我在另一个表上执行开始,其他一切都工作得很好... 我在使用: UCANAccess 4.0.3 MS Access 2007 JDK:java 1.8.0_151 NetBeans:NetBeans IDE 8.2 更新 当用console.bat打开数据库时(顺便说一下,这个文件位于UcanAccess下载文件夹中),我
问题内容: 我只是在评估H2数据库…下载并解压缩了安装文件,并连接到的数据库。是我的主目录,不存在(我希望H2创建它)。 控制台似乎可以正常工作。我创建了一个表并向其中插入了一行。即使断开并重新连接控制台,我也可以看到并查询该表。 但是,我没有看到预期的文件。它在哪里? 问题答案: 您确定没有: 文件?如果没有,请尝试以下操作: 它的作用是寻找H2控制台的Java进程,获取其PID并列出该进程的所
我对冬眠很陌生,所以我的问题对你来说很明显。我在H2控制台用3个表(data.mv.db)创建了数据库,插入一些值,然后将其复制到项目路径中的数据库文件夹中。现在我试图阅读其中一个测试,但总是有错误,即表不存在。我试着给连接url添加一些属性,比如连接延迟或者不把字母改成大写,但仍然是一样的。 错误: 我试过编辑配置。所以我补充: 并使数据库为空。奇怪的是,在H2控制台打开后,Java创建的数据库
我最近收到一封来自Firebase的电子邮件,告诉我我的实时数据库有不安全的规则。这些是我设置的规则: 这不是一条安全规则吗? 电子邮件/密码是我启用的唯一登录方法。
其他人有这个奇怪的问题吗?错误消息: 致命错误:未捕获异常“exception”,消息为“DateTime::\uuu construct():无法分析位置17(A)处的时间字符串(2016年1月18日美国/纽约凌晨00:00):在数据库中找不到时区 异常:DateTime::_构造():未能分析位置17(A)处的时间字符串(2016年1月18日美国/纽约凌晨00:00):在数据库中找不到时区 原
但它不起作用。我正在寻找适当的maven依赖。或者我应该从git签出它并部署在我们内部的ArtiFactory中?