android - Firebase 获取最后插入项目的密钥
问题描述
我有一个数据库参考。
houseReference = FirebaseDatabase.getInstance().getReference("House");
我使用以下方法将项目添加到数据库:
houseReference.push().setValue(house);
Google firebase 参考文档说您可以使用
houseReference.getKey();
但是,这会返回House
。我究竟做错了什么?
解决方案
Firebase 没有“最后一个键”的概念。但是每个DatabaseReference
都是对数据库中路径的引用,您可以通过调用它来获取该路径中的最后一个键getKey()
。所以如果你打电话给你,houseReference.getKey()
你确实得到house
了,因为那是它所指的路径中的最后一个键。
现在我们得到了好东西。
当您调用push()
Firebase 时(在客户端)生成一个新的唯一键,并返回一个DatabaseReference
指向当前路径下该键的新键。所以houseReference.push()
返回一个新DatabaseReference
的、唯一的子位置。这意味着您可以调用getKey()
这个 newDatabaseReference
来获取该新位置的最后一个键。
所以:
DatabaseReference newRef = houseReference.push();
System.out.println(newRef.getKey());
newRef.setValue(house);
推荐阅读
- android - 显示 DialogFragment 时,“android.util.AndroidRuntimeException:必须在添加内容之前调用 requestFeature()”
- node.js - 'nvm' 未被识别为内部或外部命令 Windows
- c# - 带有未指定 DateTimeKind 的 DateTime 格式序列化
- open-liberty - 不在根上下文中使用 Eclipse Microprofile (OpenLiberty)
- python - 如何在续集服务器管理工作室 2017 中使用正确的语法直接运行 python 代码
- android - 调试丢失的音频
- git - 如何在 Git 中通过 url 自动切换电子邮件地址?
- ios - 如何在单击/点击本地通知时打开特定的 ViewController。当应用程序处于后台、暂停、终止模式时
- javascript - 如何解决不是来自 webpack 的内容是从 react webpack 提供的?
- c# - 在 C# 中使用计时器刷新网站 - CefSharp