2017-04-02 4 views
0

저는 현재 백엔드 용으로 Firebase를 엄격하게 사용하는 앱을 개발 중입니다. 내 애플 리케이션에서, 나는 30 메시지 후에 작성된 첫 번째 메시지를 삭제하려면. 즉, 30 개의 메시지 만 저장할 수 있습니다. 내 firebase 데이터베이스에는 "사용자"라는 노드가 있고 그 다음에 사용자 ID 노드가 있고 그 중 하나의 사용자 ID 아래에 item이라는 다른 노드가 있습니다. 그러나 항목 노드 아래의 첫 번째 자식을 삭제하려고하지만 키를 설정하기 위해 .push() 메서드를 사용하기 때문에 해당 자식의 이름을 알 수 없습니다. 아무나 그 첫 아이 만 지우는 법을 알고 있습니까?Firebase의 push() 키를 사용하여 첫 번째 자식을 삭제합니다.

Firebase에서 자식을 삭제하는 방법을 알고 있습니다. 그 자식에게 액세스하는 방법을 모르겠습니다. 그런 다음 아이를 삭제하려면이 작업을 수행

DatabaseReference firstMessage = mDatabase.child("users").child(mUserId).child("items").getRef(); 

: 나는의 라인을 따라 뭔가를 시도했습니다.

firstMessage.removeValue(); 

.child ("items") 바로 뒤에 추가 자식이 있어야한다는 것을 알고 있지만 그 키는 어떻게 가져 옵니까?

편집 : 나는, 대신 항목 노드의 첫 번째 자식을 삭제 용액으로 올라와있다, 그것은, 사용자의 노드

DatabaseReference firstMessage = mDatabase.child("users").child(mUserId).child("items").orderByPriority().limitToFirst(1).getRef(); 
+0

가장 쉬운 해결책은 Fireworks 용 Cloud Functions를 사용하여 각 항목이 추가 될 때 응답으로 이전 항목을 삭제해야하는지 결정하는 데이터베이스 트리거를 작성하는 것입니다. –

답변

0

당신은 당신의 onDataChange이 시도 할 수 있습니다에서 첫 번째 자식을 삭제합니다

for (DataSnapshot p : dataSnapshot.getChildren()) { 
    String childKey = p.getKey(); 
} 

모든 자녀의 모든 키를받을 수 있습니다. arraylist에 추가하거나 다른 작업을 수행 할 수 있습니다.

당신은 어떤 아이를 삭제하려면, 사용

myRef.child("item").child("childKey_0").setValue(null); 

을 ============================= ===== 2017년 3월 4일에

편집 :

나는 새 질문을 얻을 수 없습니다. arrayList 사용에 관한 몇 가지 예입니다.

+0

나는이 솔루션을 시도하고 작동하지만로드가 생성 될 때 이미 저장된 키가있는 경우 arraylist를 채워야합니다. 이것이 어떻게 이루어 졌는지 모든 생각? 이것은 내가이 방법으로 붙어있는 곳입니다. –

+0

나는 당신의 질문을 정말로 얻지 못합니다. 그러나 나는 대답을 업데이트했고 그것이 유용한 지 알 수 있습니다. –

+0

죄송합니다. 나는이 방법을 시도 할 것이다. childEventListener의 사용을 권장 하시겠습니까? 아니면 다른 종류의 청취자가 필요할 것입니까? 죄송합니다. Android와 Firebase를 배우기 시작했습니다. –