问题是控制台代表“未定义”。
this.firestore.collection('list').doc('1').get().subscribe((doc: any) => {
this.myAns = doc.data().answer ? doc.data().answer : "no answer";
});
console.log('this.myAns', this.myAns);
但是,我想在控制台中得到正确的答案。
this.firestore.collection('list').doc('1').get().subscribe(async (doc: any) => {
this.myAns = await doc.data().answer ? doc.data().answer : "no answer";
});
console.log('this.myAns', this.myAns);
我试过这个。但不工作。
this.firestore.collection('list').doc('1').get().subscribe((doc: any) => {
this.myAns = doc.data().answer ? doc.data().answer : "no answer";
console.log('this.myAns', this.myAns);
});
我知道这很好用,但我想要的是代表 this.firestore 之外。 请帮助我..
您应该将 this.myAns 放在订阅块内。如果您需要在订阅块之外使用 this.myAns,您可以从订阅块内触发必要的逻辑或使用回调函数。
fetchAnswer() {
this.firestore.collection('list').doc('1').get().subscribe((doc: any) => {
this.myAns = doc.exists ? doc.data().answer : "no answer";
console.log('this.myAns inside subscribe', this.myAns);
this.handleAnswer(this.myAns);
});
}
handleAnswer(answer: any) {
console.log('this.myAns outside subscribe', answer);
}