2017-10-22 14 views
1

저는 AngularFire에서 새로 왔으며, AngularFire5로 업데이트 한 후 몇 가지 문제가 있습니다. id : name이라는 ID를 가진 'room'을 만들고 싶습니다. 사용자가 이름을 입력 한 후이 이름이 존재하면 데이터베이스를 확인한 다음, 그렇지 않으면 만들 것입니다. 방을 작성했는지 여부를 지정하는 InfoMessages를 추가합니다.값이 존재하면 AngularFire 값이 존재하는지 확인하십시오. 생성하지 않으려면 값을 만듭니다.

여기 내 코드입니다 : 같은 이름의 공간이 경우 문제는 한 번 체크한다

checkIfRoomExistAndCreate(salaName: string, puntuacio: number){ 
    this.items = this.afDB.list("/game/" + salaName).valueChanges(); 
    this.items.subscribe((x) => { 
     if (x.length === 0) { 
      this.createNewGame(salaName, puntuacio); 
     } else { 
      console.log('This room already exists'); 
     }; 
    }) 
} 

, 후를 만들어, 다시 확인하고 오류 메시지가 표시됩니다.

그래서 관측 대상에 한 번 생성되면 중단해야한다는 것을 어떻게 알 수 있습니까? `this.afDB.list를 ("createNewGame() 안에 어떤 데이터가 함수 내에서, 삽입 후에는 취소 할 수

+0

는 – Sajeetharan

+0

아 죄송합니다, 밀어 호출입니다/game/"+ salaName) .set ("player1 ", this.player1.name); ' – Joan

답변

0

,

this.afDB.list("/game/" + salaName).set("player1", this.player1.name); 
this.items.unsubscribe(); 
+0

내 항목은 Observable 이고, 탈퇴를 시도하십시오(); 옵션으로 표시되지 않습니다. – Joan

+0

이 샘플을 확인하십시오. https://github.com/angular/angularfire2/issues/377 – Sajeetharan

+0

예,이 샘플에는 광산과 같은 질문이 있으며, 변수에 구독을 저장 한 다음이 변수 unsucribed 수 있습니다. Btw, 왜 더 이상 angularfire에 대한 .first() 메소드가 없습니까? – Joan