【问题标题】:how to add a new "key-value" pair for existing child in firebase如何为firebase中的现有孩子添加一个新的“键值”对
【发布时间】:2019-05-27 17:31:23
【问题描述】:

我已将我的 android 应用程序连接到 firebase 并启用了电子邮件和密码身份验证。我目前的数据库状态是这样的:

现在我想为我拥有的所有用户添加一个额外的字段(键:“数字”),以便我的最终数据库如下所示:

那么请告诉我该怎么做?

更重要的是我编写了代码,以便我首先对他们进行身份验证,如果他们的注册成功,那么我将用户带到新的活动,他们将在收集密钥后输入这个“密钥”我应该将它添加到用户节点作为如第二张图所示。

那么请告诉我该怎么做?

【问题讨论】:

  • 您在问题中包含了 JSON 树的图片。请将其替换为实际的 JSON 作为文本,您可以通过单击 your Firebase Database console 的溢出菜单 (⠇) 中的 Export JSON 链接轻松获得。将 JSON 作为文本使其可搜索,让我们可以轻松地使用它来测试您的实际数据并在我们的答案中使用它,一般来说这只是一件好事。

标签: java android firebase firebase-realtime-database


【解决方案1】:

要在 Firebase 实时数据库中写入值,您必须知道该值的完整路径。因此,在您的情况下,这意味着您首先必须从数据库中加载所有数据,才能确定动态键(C76w3...FjsZ... 等)。

类似这样的:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
ref.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
            snapshot.getRef().child("key").setValue("hisoka");
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
}

【讨论】:

  • 我试过这个我得到一个错误说“找不到参考”,ide提供的建议是“重命名参考”。请帮忙
  • 您在我提供的代码的哪个特定行/符号上收到该消息?
  • 这一行:snapshot.child("key").setValue("hisoka");
  • 啊,我明白了。那里需要有一个getRef(),因为DataSnapshot 没有setValue() 方法。请注意,在这种情况下,研究参考文档非常方便。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多