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

时间:2018-12-02 00:28:32

标签: android firebase firebase-realtime-database

我有数据库参考。

.events{
    height: 100%;
    display:flex;
    flex-direction: column;
    align-items: center; /*center children vertically*/
    overflow-y: auto;
}

.events .event-message {
    align-items: center;
    width: 80%;
    text-align: center;
    margin: 20px auto;
    padding: 10px 0;
    background-image: linear-gradient(to right, #649173, #dbd5a4 );
    border-radius: 3px;
    box-shadow: 3px 6px 10px #393a39;
}
//this is not working
.event-desc {
    align-self: flex-start;
}

我使用以下方法向数据库添加项目:

houseReference = FirebaseDatabase.getInstance().getReference("House");

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

houseReference.push().setValue(house);  

但是,这将返回houseReference.getKey(); 。我在做什么错了?

1 个答案:

答案 0 :(得分: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);