2017-04-20 4 views
0

Firebase 노드에 값을 추가하려고하는데 현재 코드가 이미있는 것을 덮어 쓰고 있습니다.이미있는 것을 덮어 쓰지 않고 Firebase 노드에 값을 추가하십시오.

나는 (내가 UID에 "참가자"를 추가하기 위해 노력하고있어)이 같은 내 데이터베이스 설정이 있습니다

"rooms" : { 
    "-Ki6fAHv6LS5pyx34nUr" : { 
     "messages" : { 
     "-Ki70oJOAsto1uIxJsLY" : { 
      "senderId" : "tzfHgGKWLEPzPU9GvkO4XE1QKy53", 
      "senderName" : "Timothy", 
      "text" : "Test" 
     } 
     }, 
     "participants" : { 
     "tzfHgGKWLEPzPU9GvkO4XE1QKy53" : true 
     }, 
     "roomName" : "Room One" 
    } 

이것은 내가 가지고있는 코드를 실행하면 다음 다른 사용자에 대한 사용자 검색,

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

    // Add selected user's UID to current room's participants 
    let currentRoomParticipantsRef: FIRDatabaseReference = FIRDatabase.database().reference().child("rooms").child(currentRoomID).child("participants") 

    let newParticipantItem = [self.returnedUsersUID : true] 
    currentRoomParticipantsRef.setValue(newParticipantItem) 

    let alertController = UIAlertController(title: "Added!", message: "Your friend has been added to the room", preferredStyle: UIAlertControllerStyle.actionSheet) 

    let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.cancel, handler: {(alert :UIAlertAction!) in 
    }) 
    alertController.addAction(okAction) 

    self.present(alertController, animated: true, completion: nil) 
} 

"participates"에 이미 나열된 UID [s]를 새 값으로 덮어 씁니다. 새 UID를 겹쳐 쓰는 대신 목록에 어떻게 추가합니까?

답변

2

setValue (실제로 노드 전체를 새 사전으로 교체 함) 대신 updateChildValues을 사용해보십시오. 이미 존재하는 키를 덮어 쓰지 않고 값을 업데이트하거나 새 노드를 만듭니다.

+0

완벽! 그게 내가 필요한거야. 나는 6 분 안에 대답을 받아 들일 수있다. 다시 한 번 감사드립니다! – KingTim

관련 문제