我正在学习如何构建android应用,希望能对此给予帮助。我想知道如何添加节点,然后将该节点的子节点添加到Firebase中。我正在使用Android Studio,并且已经通过push()保存了数据,但是在这种情况下,我不需要生成密钥,密钥已经存在。我需要添加食品杂货_列表_密钥_1,然后添加产品_密钥_x(其中有更多),并为产品_密钥_x分配值。
此键在屏幕截图上手动输入以进行演示。 Firebase为它们生成了字符串,因为它们是另一个表中的主键。我知道这是nosql数据库,但需要某种机制对其进行仿真。
在方法saveGL_withProducts中,我已在带有属性和值的节点杂货清单中输入GroceryList,并返回生成的密钥,我想将该密钥作为子项添加到具有产品列表的杂货清单products节点中。
public void saveGL_withProducts(GroceryListsModel groceryListsModel, List<GroceryListProductsModel> groceryListProductsModels){
if (firebaseDatabase == null)
firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference ref = firebaseDatabase.getReference().child(GROCERYLISTSNODE);
DatabaseReference pushRef = ref.push();
pushRef.setValue(groceryListsModel);
String generated_GL_key = pushRef.getKey();
if(!isNullOrBlank(generated_GL_key)){
//TO DO ADDING IN GROCERYLISTPRODUCTS NODE
}
else{
//TO DO
}
}
赞赏任何建议。谢谢您的时间!
答案 0 :(得分:0)
您可以查看文档here中的常见示例。 push
方法将使用唯一键插入新节点,而setValue
方法可用于将数据插入到特定节点。
要插入数据的节点可以通过以下方式指定:
User user = new User(name, email);
mDatabase.child("users").child(userId).setValue(user);
在这里,User
类是一个POJO,它为数据提供结构。还应该可以使用描述映射的Map
代替类。
在您的情况下,代码将类似于:
ref.child("grocery_list_key_1").child("product_key_1").setValue(data);
假设ref
指向“ grocerylistproducts”节点。如您所见,您需要事先知道所有中间节点的名称,这样才能起作用。
此外,setValue
方法将覆盖所有现有的节点信息。因此,如果仅要修改某些字段,则应使用here中所述的适当更新方法。