【发布时间】:2019-09-03 03:39:23
【问题描述】:
我使用以下代码来遍历数据集合,并在电子邮件匹配时更改字段。请注意,代码在片场崩溃。迭代工作得很好。 afs 被初始化为 AngularFirestore
onChangeRole(email) {
this.afs.collection("users").get().toPromise().then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
if (doc.data().email == email) {
this.afs.collection("users").doc(doc.id).set({
role: 2
})
}
});
});
}
但我收到了:
ERROR 错误:未捕获(承诺中):TypeError:无法读取未定义的属性“afs” TypeError:无法读取未定义的属性“afs”
其中 afs 是 AngularFirestore
import { AngularFirestore, AngularFirestoreCollection , AngularFirestoreDocument} from '@angular/fire/firestore';
【问题讨论】:
-
你的
constructor(private afs: AngularFirestore) { }是这样的 -
是的 @SouravDutta 实际上 console.log 显示了整个集合,所以 afs 正在为 .get() 工作。它仅在我收到错误的 .set() 中
-
在下面试试这个
onChangeRole(email) { const usersColl = this.afs.collection("users"); usersColl.get().toPromise().then(function (querySnapshot) { querySnapshot.forEach(function (doc) { // doc.data() is never undefined for query doc snapshots console.log(doc.id, " => ", doc.data()); if (doc.data().email == email) { usersColl.doc(doc.id).set({ role: 2 }, { merge: true }) } }); }); } -
@SouravDutta 工作正常,就是这样
标签: angular typescript angularfire