Java 如何在firebase上获取节点名称?
我正在为一家餐厅制作菜单,首先我想知道这个结构是否正确 如果不是,我如何改进它。 第二,我想检索子菜单名。例如,我想知道牛排的名称、描述和价格Java 如何在firebase上获取节点名称?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在为一家餐厅制作菜单,首先我想知道这个结构是否正确 如果不是,我如何改进它。 第二,我想检索子菜单名。例如,我想知道牛排的名称、描述和价格 DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); final DatabaseReference refNom = ref.child("Locales"); final DatabaseReference refNom = ref.chil
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
final DatabaseReference refNom = ref.child("Locales");
final DatabaseReference refNom = ref.child("Locales");
refNom.orderByChild("Nombre").equalTo(nombreLocal/*i'm getting this from a getExtra*/).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
lista.removeAll(lista);
for (DataSnapshot ds1 : dataSnapshot.getChildren()) {
String nomPlatillo = ds1.child("menu").getKey();
String descPlatillo = ds1.child("menu")./*dish_name.child*/child("Description").getValue(String.class);
double precio = ds1.child("menu")./*dish_name.child*/child("price").getValue(double.class);
datosMenu menu = new datosMenu(nomPlatillo,descPlatillo,precio);
lista.add(menu);
}
这是我的循环:因为菜单将有很多项,我想如果您可以创建类似的项数组会更好
{
"menu": [
{
"item": "Steak taco",
"desc": "",
"price": "5",
"image_url": ""
},{
"item": "pizza",
"desc": "",
"price": "4",
"image_url": ""
}
]
}
这样就很容易进行迭代分析。因为菜单将有很多项,我想如果您可以创建类似的项数组会更好
{
"menu": [
{
"item": "Steak taco",
"desc": "",
"price": "5",
"image_url": ""
},{
"item": "pizza",
"desc": "",
"price": "4",
"image_url": ""
}
]
}
这样就很容易进行迭代分析。您缺少一个孩子。在
菜单
节点和说明
键之间,树层次结构中还有一个步骤,牛排塔可
。因此,要解决此问题,请更改以下代码行:
String descPlatillo = ds1.child("menu")./*dish_name.child*/child("Description").getValue(String.class);
double precio = ds1.child("menu")./*dish_name.child*/child("price").getValue(double.class);
到
还请注意,您使用的是
getValue(Double.class)
,而不是getValue(Double.class)
您缺少一个孩子。在菜单
节点和说明
键之间,树层次结构中还有一个步骤,牛排塔可
。因此,要解决此问题,请更改以下代码行:
String descPlatillo = ds1.child("menu")./*dish_name.child*/child("Description").getValue(String.class);
double precio = ds1.child("menu")./*dish_name.child*/child("price").getValue(double.class);
到
还请注意,is使用了
getValue(Double.class)
而不是getValue(Double.class)
请分享如何从数据库中获取dataSnapshot
,因为正确的解决方案取决于此。现在它已编辑完毕,请分享如何从数据库中获取dataSnapshot
,因为正确的解决方案取决于此。现在我知道了,但是孩子的名字会不同,因为我会放不同的菜,名字会改变,所以我想得到那个节点的名字(在这个例子中是塔可牛排),在这种情况下,您应该使用.child(您的变量)
而不是.child(“牛排玉米卷”)
。其中yourVariable
保存创建引用所需的任何内容。你不能让它为空。是的,但是,应用程序不知道菜肴的名称,所以我不能为每一道菜的名称创建一个变量,我想要的是得到该菜/节点的名称,因为名称是不同的。在这种情况下,在创建特定菜时,你需要在变量中保留该菜的值。这样你以后就可以在参考资料中使用它了,对吗?一切都好吗?你解决了这个问题吗?我知道,但是这个孩子的名字会不同,因为我会放不同的菜,名字会改变,所以我想得到这个节点的名字(在这个例子中是塔可牛排),以及它们各自的描述和价格。在这种情况下,你应该使用.child(yourVariable)
而不是.child(“牛排塔可”)
。其中yourVariable
保存创建引用所需的任何内容。你不能让它为空。是的,但是,应用程序不知道菜肴的名称,所以我不能为每一道菜的名称创建一个变量,我想要的是得到该菜/节点的名称,因为名称是不同的。在这种情况下,在创建特定菜时,你需要在变量中保留该菜的值。这样你以后就可以在参考资料中使用它了,对吗?一切都好吗?你解决问题了吗?