2017-12-21 9 views
0

특정 디렉토리의 특정 노드에서 특정 키/ID를 삭제/찾는 방법을 고민하고 있습니다. 여기디렉토리의 모든 노드에서 특정 값 검색

내 데이터베이스가 어떻게 보이는지 경우 : userIDpostID

 this image

.childByAutoId()의 사용을 통해 발생한다. 그래서 당신이 추측 할 수있는 것처럼 특정한 문자열로 검색합니다. 사용자 이름은 불가능합니다. 그러나 함수를 호출 할 때 매개 변수를 통해 postID이 전달됩니다. 몇 가지 방법을 시도했지만 행운은 없습니다.
  • 가 postID이 이미 전달되는 "공급"디렉토리에

    • 이동, 그래서 postID이있는 경우 피드에서 모든 노드를 통해
    • 모양 : 본질적으로 이것은 내가 (의사 코드)를 수행 할 것입니다 특정 노드에서이 아닌 경우, 노드를 제거 노드가

    내가 내 피드 디렉토리에 대한 참조를해야합니까이 특정 디렉토리에 존재하지 않을 때까지

  • 계속 다음 노드로 이동 - API.Feed.REF_FEED을 . 나는 등

  • 답변

    0

    이 작동 .parent, .queryOrdered, .queryEqualTo를 사용하는 것을 시도했다 :

    당신이 모든 게시물에 따라서 -L....VJ에 인덱스를 가지고 것을 요구하는
    let query = feedRef.queryOrdered(byChild: "-L....VJ").equalTo(true) 
    query.observe(.childAdded, with: { (snapshot) -> Void in 
        snapshot.ref.removeValue() 
    }) 
    

    그것은하지만이 방법의 문제점 ID를 삭제할 수 있습니다. 이것은 빠르게 관리하기 어려워집니다. 이러한 이유로

    데이터베이스에 반전 조회 맵 추가하는 것을 고려 : 자신의 공급에 해당 게시물이 사용자에게 각 게시물의 ID를 매핑 한 : 지금

    userposts 
        $postid 
        userid1: true 
        userid2: true 
    

    빠르게 모든 사용자를 찾을 수 특정 게시물을 작성한 다음 해당 사용자의 피드에서 게시물을 삭제하십시오.