Android 如何在firebase中获取childs的唯一密钥
我是Firebase的新手 所以我有一个场景,我必须设置一个检查,如果一家酒店已经存在于FavoriteHotels节点中,那么这必须确保该酒店已经存在于FavoriteHotels节点中,否则只需存储单击的酒店。就像这个代码Android 如何在firebase中获取childs的唯一密钥,android,firebase,firebase-realtime-database,arraylist,Android,Firebase,Firebase Realtime Database,Arraylist,我是Firebase的新手 所以我有一个场景,我必须设置一个检查,如果一家酒店已经存在于FavoriteHotels节点中,那么这必须确保该酒店已经存在于FavoriteHotels节点中,否则只需存储单击的酒店。就像这个代码 final String favHotel_Id = myRef.push().getKey(); myRef.child("Users").child(mUser.getUid())
final String favHotel_Id = myRef.push().getKey();
myRef.child("Users").child(mUser.getUid())
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot userSnapshot : snapshot.getChildren()) {
if (!userSnapshot.child("FavouriteHotels").exists()){
Log.d(TAG, "onDataChange: "+userSnapshot.getChildren());
if (Objects.equals(hotelArrayList.get(position).getHotelName(), userSnapshot.child("Name").getValue() )) {
Toast.makeText(mContext, "Already saved to favourite hotels", Toast.LENGTH_SHORT).show();
} else {
if (favHotel_Id != null) {
myRef.child("Users").child(mUser.getUid()).child("FavouriteHotels").child(favHotel_Id).child("Name").setValue(hotelArrayList.get(position).getHotelName());
myRef.child("Users").child(mUser.getUid()).child("FavouriteHotels").child(favHotel_Id).child("Image").setValue(hotelArrayList.get(position).getImageID());
myRef.child("Users").child(mUser.getUid()).child("FavouriteHotels").child(favHotel_Id).child("rating").setValue(hotelArrayList.get(position).getHotelRating());
myRef.child("Users").child(mUser.getUid()).child("FavouriteHotels").child(favHotel_Id).child("Price").setValue(hotelArrayList.get(position).getHotelPrice());
}
}
}else {
Toast.makeText(mContext, "No Data Found", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
我想说的一件事是,我正在从ArrayList中保存这个酒店项目及其属性,我从ArrayList中得到了它
if (Objects.equals(hotelArrayList.get(position).getHotelName(), userSnapshot.child("Name").getValue() )) {
Toast.makeText(mContext, "Already saved to favourite hotels", Toast.LENGTH_SHORT).show();
} else {
if (favHotel_Id != null) {
myRef.child("Users").child(mUser.getUid()).child("FavouriteHotels").child(favHotel_Id).child("Name").setValue(hotelArrayList.get(position).getHotelName());
myRef.child("Users").child(mUser.getUid()).child("FavouriteHotels").child(favHotel_Id).child("Image").setValue(hotelArrayList.get(position).getImageID());
myRef.child("Users").child(mUser.getUid()).child("FavouriteHotels").child(favHotel_Id).child("rating").setValue(hotelArrayList.get(position).getHotelRating());
myRef.child("Users").child(mUser.getUid()).child("FavouriteHotels").child(favHotel_Id).child("Price").setValue(hotelArrayList.get(position).getHotelPrice());
}
}
我想获取在圆圈中突出显示的酒店的唯一键,并检查酒店名称,如果hotelArrayList.get(position).getHotelName(),userSnapshot.child(“Name”).getValue()
,然后向我敬酒,表明该酒店已经存在于数据库中
您可以像这样获得按键
Query query = FirebaseDatabase.getInstance().getReference("your node path");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
String key = snapshot.getKey();
Log.i(TAG,key);
}
}