2017-04-08 32 views

答えて

13

データベース内の値にアクセスするには、その場所にDatabaseReferenceを作成します。 /ZONES/ZONE_1/ZNAME/ZONES/ZONE_1

  • zone1NameRefポイントに/ZONES
  • zone1Refポイントへ

    • zonesRefポイント:このスニペットで

      DatabaseReference zonesRef = FirebaseDatabase.getInstance().getReference("ZONES"); 
      DatabaseReference zone1Ref = zonesRef.child("ZONE_1"); 
      DatabaseReference zone1NameRef = zone1Ref.child("ZNAME"); 
      

      :ここでは、データベース内の場所への3つの参照があります

      詳細については、Firebase documentation on getting a database referenceを参照してください。

      各参照にリスナーを接続して、その位置で値を取得できます。例えば、/ZONES/ZONE_1/ZNAMEの値を取得する:読み出し動作のこのタイプの詳細については

      zone1NameRef.addValueEventListener(new ValueEventListener() { 
          @Override 
          public void onDataChange(DataSnapshot dataSnapshot) { 
           Log.i(TAG, dataSnapshot.getValue(String.class); 
          } 
      
          @Override 
          public void onCancelled(DatabaseError databaseError) { 
           Log.w(TAG, "onCancelled", databaseError.toException()); 
          } 
      }); 
      

      を、Firebase documentation on reading valuesを参照してください。

      代わりに/ZONES/ZONE_1でリッスンすると、すべてのプロパティを持つノード全体のDataSnapshotが表示されます。あなたはそれからZNAMEを取得するためにDataSnapshot.child()を使用します。

      zone1Ref.addValueEventListener(new ValueEventListener() { 
          @Override 
          public void onDataChange(DataSnapshot dataSnapshot) { 
           Log.i(TAG, dataSnapshot.child("ZNAME").getValue(String.class); 
          } 
      
          @Override 
          public void onCancelled(DatabaseError databaseError) { 
           Log.w(TAG, "onCancelled", databaseError.toException()); 
          } 
      }); 
      

      もう一つレベルアップし、あなたはすべてのゾーンであなたのスナップショットを取得しますれ、/ZONES上で聴くことができます。これは複数の子を扱うので、あなたはDataSnapshot.getChildren()でそれらを介してループする必要があります。

      zonesRef.addValueEventListener(new ValueEventListener() { 
          @Override 
          public void onDataChange(DataSnapshot dataSnapshot) { 
           for (DataSnapshot zoneSnapshot: dataSnapshot.getChildren()) { 
            Log.i(TAG, zoneSnapshot.child("ZNAME").getValue(String.class); 
           } 
          } 
      
          @Override 
          public void onCancelled(DatabaseError databaseError) { 
           Log.w(TAG, "onCancelled", databaseError.toException()); 
          } 
      }); 
      

      これに関する詳細については、Firebase documentation on listening for lists of dataを参照してください。

      最後に、あなたが"ZCODE": "ECOR"でゾーンを見つけるために、例えば、特定のゾーンを見つけるために照会することがあります:

      Query zonesQuery = zonesRef.orderByChild("ZCODE").equalTo("ECOR"); 
      zonesQuery.addValueEventListener(new ValueEventListener() { 
          @Override 
          public void onDataChange(DataSnapshot dataSnapshot) { 
           for (DataSnapshot zoneSnapshot: dataSnapshot.getChildren()) { 
            Log.i(TAG, zoneSnapshot.child("ZNAME").getValue(String.class); 
           } 
          } 
      
          @Override 
          public void onCancelled(DatabaseError databaseError) { 
           Log.w(TAG, "onCancelled", databaseError.toException()); 
          } 
      }); 
      

      が、この詳細については、Firebase documentation on sorting and filtering dataをお読みください。

  • +0

    ありがとうございました。 – Surekha

    +0

    非常に簡単で明確な説明。 firebase api explorationで良い仕事を続ける! – VVB

    関連する問題