【问题标题】:I want the auto generated key from firebase whenever i push data每当我推送数据时,我都想要从 firebase 自动生成的密钥
【发布时间】:2016-10-12 08:33:00
【问题描述】:

到目前为止,我尝试过的所有方法都只返回了父母键,而不是自动生成的按键。

String key = rootref.child("user").push().getKey();
newUser.setUid(key);
Log.i("#####",key);
Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put(key,newUser);
rootref.updateChildren(childUpdates);

这里getkey() 正在向我返回“用户”,而我想要自动生成的密钥。在此之前,我尝试使用子事件侦听器和listenerforsinglevaluedevent,但即使这些也给出了相同的输出。任何帮助都会不胜感激!

【问题讨论】:

  • 调用push().getKey()会返回一个新的推送ID。如果您在阅读时无法获取推送 ID,请将阅读的代码添加到您的问题中。
  • 这就是问题...我没有得到新的推送 ID...我得到的是用户的父 ID...我不明白你的意思,只要我添加 ann带有推送的对象我想要生成推送 id,这存在于我的代码中
  • 我刚刚跑了String key = rootref.child("user").push().getKey(); System.out.println(key);,它打印出-KS4eeDhFqKcKO3oBy6-
  • 谢谢....我很抱歉...显然当我构建并运行应用程序时,我所做的更改没有反映,我重新安装然后尝试,它可以工作
  • 很高兴听到你把它整理好了。

标签: android firebase firebase-realtime-database


【解决方案1】:

我正在检查您的代码,但没有看到 setValue。这就是 getKey 返回“用户”的原因。它应该像 rootref.child("user").push().setValue(UserObject)

试试这个! 我使用此代码。

rootref.push().setValue(UserObject).addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
            if (task.isSuccessful()) {
                Toast.makeText(getApplicationContext(),rootref.push().getKey(),Toast.LENGT_LONG).show();
            }
        }
    });

【讨论】:

  • 这将执行一个新的 push(),因此所烤的密钥将不是用户数据的密钥。
猜你喜欢
  • 2021-07-14
  • 2017-12-12
  • 1970-01-01
  • 1970-01-01
  • 2022-10-26
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多