【问题标题】:How to add node and subnode with values to Firebase in Android Studio如何在 Android Studio 中将具有值的节点和子节点添加到 Firebase
【发布时间】:2018-12-03 23:18:31
【问题描述】:

我正在学习如何构建 android 应用程序,我希望能在这件事上提供帮助。我想知道如何添加节点,然后将该节点的子节点与值添加到 Firebase。我正在使用 Android Studio,并且我使用 push() 保存了数据,但在这种情况下,我不需要生成密钥,密钥已经存在。我需要添加grocery_list_key_1 然后product_key_x (还有更多)和product_key_x 的属性值。

此键在屏幕截图中手动输入以进行演示。 Firebase 为它们生成字符串,因为它们是另一个表中的主键。我知道这是nosql数据库,但需要一些机制来模拟它。

在方法 saveGL_withProducts 中,我已在带有属性和值的节点杂货列表中输入 GroceryList,并返回生成的密钥,我想将其添加为带有产品列表的商品列表产品节点中的子节点。

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

    }



}

感谢任何建议。感谢您的宝贵时间!

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    您可以查看文档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 中提到的合适的更新方法。

    【讨论】:

    • 非常感谢!这行得通!在这种情况下,我只是添加新数据,因此不会覆盖任何内容。
    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 2020-08-25
    • 1970-01-01
    相关资源
    最近更新 更多