Я новичок в сети (и все асинхронно). Я пытаюсь завершить двухэтапный процесс в приложении Angular + Firebase:
- Запросить коллекцию Firestore, чтобы найти идентификатор документа, который соответствует фильтру (name == 'theName').
- Используйте идентификатор для обновления документа.
Я из встроенного мира, где я могу сделать что-то подобное (контекст приложения - я пытаюсьотслеживать результаты в соревнованиях по боевой робототехнике).
// Update the winning robot's doc with results
// Find the ID of the robot we're looking for (ex. winningRobotName = "Some Name")
this.firestore.collection('robots', ref => ref.where('name', '==', winningRobotName)).snapshotChanges()
.subscribe(data => {
this.bots = data.map(e => {
return {
id: e.payload.doc.id,
name: e.payload.doc.data()['name'],
// other fields
} as Robot;
})
});
let robot = this.bots[0]; <--------- This doesn't work because I reach here before the above call returns.
// Update this robot with new fields
this.firestore.doc('robots/' + robot.id)
.update({
fightCount : robot.fightCount + 1,
winCount : robot.winCount + 1,
// other updates
});
Как ждать возврата одной подписки перед выполнением другой команды? Вы вкладываете подписки? Есть что-то действительно простое, о чем я просто еще не знаю?
Спасибо.