我有数据库参考。
.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();
。我在做什么错了?
答案 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);