programing

Android Firebase, 하나의 하위 개체 데이터만 가져옵니다.

css3 2023. 6. 9. 22:19

Android Firebase, 하나의 하위 개체 데이터만 가져옵니다.

저는 안드로이드 파이어베이스에서 한 아이 오브젝트의 데이터를 얻을 수 있는 방법을 찾고 있었습니다.

파이어베이스가 아이 안드로이드를 되찾는 것과 같은 것들을 찾았습니다.모든 솔루션이 "Child Event Listener"를 사용하여 제안하고 있지만, 이 데이터는 이동, 삭제, 업데이트 등의 시기가 아니라 현재 이 데이터를 가져와야 합니다.

내 데이터는 https://.firebaseio.com/users/ /creation에 문자열로 저장됩니다.제 브라우저에 정확한 URL을 복사하면 바로 "Firebase Forge Dashboard"에서 'creation: "2015/05/31 21:33:55"를 볼 수 있기 때문에 너무 많은 작업을 할 필요 없이 간단하게 액세스할 수 있는 방법이 있을 것으로 생각합니다.

청취자 없이 액세스하려면 어떻게 해야 합니까?

Firebase 수신기는 초기 데이터와 변경 사항을 모두 호출합니다.

컬렉션의 데이터를 동기화하려는 경우ChildEventListener단일 개체를 동기화하려는 경우ValueEventListener두 경우 모두 데이터를 "얻을" 수 없습니다.데이터를 동기화하는 중입니다. 즉, 초기 데이터에 대해 또는 데이터가 업데이트될 때마다 콜백이 여러 번 호출될 수 있습니다.

내용은 Firebase의 Android용 빠른 시작 안내서에 나와 있습니다.관련 코드 및 견적:

FirebaseRef.child("message").addValueEventListener(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot snapshot) {
    System.out.println(snapshot.getValue());  //prints "Do you have data? You'll love Firebase."
  }
  @Override
  public void onCancelled(DatabaseError databaseError) {        
  }
});

위의 예에서 값 이벤트는 데이터의 초기 상태에 대해 한 번 실행된 다음 해당 데이터의 값이 변경될 때마다 다시 실행됩니다.

잠시 시간을 내어 빠른 시작을 해보십시오.그것은 15분 이상 걸리지 않을 것이고 많은 머리 긁힘과 질문으로부터 여러분을 구해줄 것입니다.Firebase Android 가이드는 특히 이 질문에 대한 다음 방문지로 적합합니다. https://firebase.google.com/docs/database/android/read-and-write

값을 직접 읽지 않습니다.설정할 수 있습니다..setValue()그러나 참조 개체에 .getValue()가 없습니다.

청취자를 사용해야 합니다.값을 한 번만 읽으려면 다음을 사용합니다.ref.addListenerForSingleValueEvent().

예:

Firebase ref = new Firebase("YOUR-URL-HERE/PATH/TO/YOUR/STUFF");
ref.addListenerForSingleValueEvent(new ValueEventListener() {
   @Override
   public void onDataChange(DataSnapshot dataSnapshot) {
       String value = (String) dataSnapshot.getValue();

       // do your stuff here with value

   }

   @Override
   public void onCancelled(FirebaseError firebaseError) {

   }
});

출처: https://www.firebase.com/docs/android/guide/retrieving-data.html#section-reading-once

특정 노드 데이터만 가져오면 완벽하게 작동합니다.

mFirebaseInstance.getReference("yourNodeName").getRef().addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {


        for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
            Log.e(TAG, "======="+postSnapshot.child("email").getValue());
            Log.e(TAG, "======="+postSnapshot.child("name").getValue());
        }
    }

    @Override
    public void onCancelled(DatabaseError error) {
        // Failed to read value
        Log.e(TAG, "Failed to read app title value.", error.toException());
    }
});

다음과 같은 방식으로 데이터를 저장합니다.

accountsTable ->
  key1 -> account1
  key2 -> account2

개체 데이터를 가져오려면:

accountsDb = mDatabase.child("accountsTable");

accountsDb.child("some   key").addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot snapshot) {

                    try{

                        Account account  = snapshot.getChildren().iterator().next()
                                  .getValue(Account.class);


                    } catch (Throwable e) {
                        MyLogger.error(this, "onCreate eror", e);
                    }
                }
                @Override public void onCancelled(DatabaseError error) { }
            });

언급URL : https://stackoverflow.com/questions/30564735/android-firebase-simply-get-one-child-objects-data