【问题标题】:How to get Unique Key of childs in firebase如何在firebase中获取孩子的唯一密钥
【发布时间】:2020-09-15 13:36:19
【问题描述】:

我是 Firebase 的新手 所以我有一个场景,我必须设置一个检查,如果一家酒店已经存在于 FavouriteHotels 节点中,那么这必须 Toast 这家酒店已经存在于 FavouriteHotels 节点中,否则只需存储点击的酒店。就像在这段代码中一样。

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 中保存该酒店项目及其属性

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() 则向我展示这家酒店已经存在于数据库中的祝酒词。

【问题讨论】:

    标签: android firebase firebase-realtime-database arraylist


    【解决方案1】:

    你可以像这样得到按键。

    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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2017-11-17
      • 1970-01-01
      • 1970-01-01
      • 2021-06-12
      • 2018-03-11
      相关资源
      最近更新 更多