angular - 无法读取 collection.set() 上未定义的属性 afs (Angularfirestore)
问题描述
我使用以下代码来遍历数据集合,并在电子邮件匹配时更改字段。请注意,代码在片场崩溃。迭代工作得很好。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
})
}
});
});
}
但我收到:
错误错误:未捕获(承诺中):类型错误:无法读取未定义的属性“afs”类型错误:无法读取未定义的属性“afs”
afs 是 AngularFirestore
import { AngularFirestore, AngularFirestoreCollection , AngularFirestoreDocument} from '@angular/fire/firestore';
解决方案
你必须在构造函数中初始化它,然后你就可以像你尝试的那样将它与this.afs一起使用。
每个例子:
constructor(private afs: AngularFirestore) { }
编辑:更改箭头功能使用的功能词:
this.afs.collection("users").get().toPromise().then( querySnapshot => {
querySnapshot.forEach( 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
})
}
});
});
推荐阅读
- javascript - 未捕获的类型错误:$(...).sidenav 不是函数
- php - 使用 PHP 从 SQL 数据库中获取 url 时如何引入锚链接?
- c++ - 错误:“int*”和“int”类型的无效操作数到二进制“operator*”
- c# - Codefirst 的实体框架迁移错误
- css - 将 CSS 动画应用于文本 - 如何正确执行?
- c# - SQL Server,创建密码字段 MD5
- node.js - 如何阻止 ImageMagick 由于 SIGKILL 而失败?
- python - Groupby DatetimeIndex 月份
- matlab - 是否有任何 Octave 的替代 Matlab 的 pointCloud()?
- css - 将菜单导航图标移动到页面顶部