getPlayerFromMatchDayAvailable(player:Player, id:String):string{
this.playerscollection = this.afs.collection<Player>(`matchdays/${id}/availablePlayers`, ref => ref.where('email','==','john@test.com'))
this.players2 = this.playerscollection.snapshotChanges()
this.players2.subscribe( data => {
if(data){
console.log(data);
data.map(test => {
console.log(test.payload.doc.id); -> **need to return this**
this.af = test.payload.doc.id;
});
}
});
console.log(this.af)
return this.af;
// this.players2.forEach(player => {
// player.forEach(playerData => {
// let data = playerData.payload.doc.data();
// let ids = playerData.payload.doc.id;
// this.af = playerData.payload.doc.id;
// console.log(id,data)
// });
// });
}
Нужно вернуть значение test.payload.doc.id в виде строки, чтобы я мог использовать его внутри файла component.ts. Пожалуйста, дайте мне знать, как вернуть это значение из подписки.
РЕДАКТИРОВАТЬ 2
Изменена подписка внутри компонента и назначен идентификатор строковой переменной.
Мне нужен идентификатор в этом методе, чтобы удалить документ из вложенной коллекции в firestore. Я думаю, что не могу присвоить значение переменной внутри функции .map (), может быть?
onNotAvailableClick(){
this.authService.getAuth().subscribe(auth => {
if(auth){
this.loggedInUser = auth.email;
this.playerService.getPlayers().subscribe(players => {
this.allPlayers = players;
// console.log(users);
// console.log(this.loggedInUser);
this.myPlayer = this.allPlayers.filter(user => user.email == this.loggedInUser)
// console.log(this.myUser);
this.currentUser = this.myPlayer[0];
this.p = this.matchdayService.getPlayerFromMatchDayAvailable(this.myPlayer[0],this.id)
this.p.subscribe( data => {
if(data){
console.log(data);
data.map(test => {
console.log(test.payload.doc.id);
this.pid = test.payload.doc.id;
});
}
});
console.log(this.pid)
});
}else{
}
});
}