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
'programing' 카테고리의 다른 글
형식 지정자 %02x (0) | 2023.06.14 |
---|---|
이름이 [DEFAULT]인 FirebaseApp이 없습니다. (0) | 2023.06.09 |
팀 프로비저닝 프로필에 장치 추가 (0) | 2023.06.09 |
루비에서 인덱스로 매핑/수집하는 방법은 무엇입니까? (0) | 2023.06.09 |
R: 목록에 있는 개체 수 (0) | 2023.06.09 |