【问题标题】:Firebase Realtime Database - Updating Existing ValueFirebase 实时数据库 - 更新现有值
【发布时间】:2020-08-10 15:02:22
【问题描述】:

我是 Firebase 的新手,需要一些帮助。

我想在“MCwD6C_-XCZNGWxFLhO”用户中插入“Cart”值,“Cart”有“itemName”、“quantity”、“itemPrice”字段。

试了很多方法还是不行。

这是我目前的火力基地结构

{
   -User
        -MCwD6C_-XCZNGWxFLhO
           email:testing@gmail.com
           username:testing
}

我想插入新数据变成这样

{
  -User
       -MCwD6C_-XCZNGWxFLhO
           email:testing@gmail.com
           username:testing
           -Cart
              itemName:a
              itemPrice:66
}

【问题讨论】:

  • 要向特定的孩子添加数据,您需要记住 id(MCwD6C_-XCZNGWxFLhO)
  • 还有其他方法吗?
  • 您可以通过用户名或电子邮件query 获取id/key 然后使用此ID 添加数据

标签: java android firebase firebase-realtime-database


【解决方案1】:

您需要key 来更新数据,

获取密钥:

String key;

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference()
                .child("User");

Query query = databaseReference.orderByChild("username").equalTo("testing");

query.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                for (DataSnapshot snapShot : dataSnapshot.getChildren()) {
                    key = snapShot.getKey(); //Key
                }

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                
            }
        });

添加日期

HashMap<String, Object> map = new HashMap<>();
map.put("itemName", "a");
map.put("itemPrice", "66");

databaseReference.child(key).child("Cart").updateChildren(map);

【讨论】:

    【解决方案2】:

    如果您保存了密钥 -MCwD6C_-XCZNGWxFLhO,则可以使用 setValue(newValue) 更新值。查看this 参考以获取更多信息。例如,假设您已经完成了mDatabase.child("User").child(yourKey).setValue(yourObject); 其中 yourObject 没有 Cart 对象或 Cart 对象为空。当您在 yourObject 中准备好 Cart 对象并且想要推送值时,再次执行相同的操作,这一次您的 firebase 数据将被更新。

    【讨论】:

    • 如何获取密钥-MCwD6C_-XCZNGWxFLhO?
    • 我理解的问题是结构。您不应该依赖于自动生成的密钥。由于您有一个用户列表,因此您应该在用户标签下有用户 ID,然后输入值。另外,由于您正在更新值,我想您不需要一个用户节点中的数据列表。在这种情况下,您可以避免此 id 检索。 stackoverflow.com/a/37606379/5339146 如果您确实需要遍历键,请查看此参考。
    猜你喜欢
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多