我正在制作一个应用程序,并试图通过它的id在离子4的模态内获得产品数据。我用的是打字稿,但运气不好。因为对firebase的调用是异步的,所以我无法获得在firebase中保存的数据,而且因为我是新的主题,所以我无法找出编写代码的正确方法。我读过如何做到这一点,但我很难做到。
下面是我的函数,它试图从firebase抓取产品数据。它在console.log('todo', todo)上的日志总是空的。
async editProduct(id) {
const getTodo = docRef => {
setTimeout(() => {
docRef = this.afs.collection("products").doc(id);
docRef.get().subscribe((doc) => {
if (doc.exists) {
let data = doc.data();
return data;
} else {
console.log("No document.");
return false;
}
});
}, 2000)
}
getTodo(todo => {
console.log('todo', todo)
})
const modal = await this.modalCtrl.create({
component: AdminProductPage,
'id': id,
});
await modal.present();
}
你的"gettodo"有问题。很可能你正在用你的代码记录空数据,我可以给你适当的功能示例:
myData
editProduct() {
this.afs.collection("products").doc(id)
.valueChanges()
.subscribe(data => {
console.log(data)
myData = data
})
}
getData() {
console.log(this.myData) // You will log it twice with this line
}
<<p>谷歌例子/strong>docRef.get().then((doc) => {
if (doc.exists) {
console.log("Document data:", doc.data());
} else {
// doc.data() will be undefined in this case
console.log("No such document!");
}
}).catch((error) => {
console.log("Error getting document:", error);
});
https://firebase.google.com/docs/firestore/query-data/get-data?hl=es