Firebase获取最后插入项目的密钥

Sam*_*uel 2 android firebase firebase-realtime-database

我有一个数据库参考.

houseReference = FirebaseDatabase.getInstance().getReference("House");
Run Code Online (Sandbox Code Playgroud)

我使用以下命令向db添加项:

houseReference.push().setValue(house);  
Run Code Online (Sandbox Code Playgroud)

Google firebase参考文档您可以获取最后一项使用的密钥

houseReference.getKey();
Run Code Online (Sandbox Code Playgroud)

但是,这会回来House.我究竟做错了什么?

Fra*_*len 6

Firebase没有"最后一把钥匙"的概念.但每个DatabaseReference都是对数据库中路径的引用,并通过调用getKey()它获得该路径中的最后一个键.所以如果你houseReference.getKey()确实给你打电话house,那是因为那是它引用的路径中的最后一个键.

现在我们得到了好东西.

当您致电push()Firebase时(在客户端中)生成一个新的唯一键,并DatabaseReference在当前路径下返回一个新的指向该键的点.因此,houseReference.push()返回一个新DatabaseReference的,唯一的子位置.这意味着你可以调用getKey()这个新的DatabaseReference来获取新位置的最后一个键.

所以:

DatabaseReference newRef = houseReference.push();
System.out.println(newRef.getKey());
newRef.setValue(house);  
Run Code Online (Sandbox Code Playgroud)