use*_*242 3 javascript firebase firebase-realtime-database angular
我正在使用以下代码在Firebase中检索数据:
this.managerList = this.afDB.database.ref('users').orderByChild('managedby').equalTo(uID);
this.managerList.on('value', (snapshot) => {
this.managerIdArray = Object.keys(snapshot.val());
this.managerNameArray = snapshot.val();
});
Run Code Online (Sandbox Code Playgroud)
每当返回null值时,我都会收到一个错误:错误:未捕获(承诺中):TypeError:无法读取未定义的属性............。
当我尝试在上面添加catch()时,它说不能使用catch()或then()。如何使用catch()报错。
Firebase的on()方法将侦听器附加到数据,然后将其与当前值一起触发一次,并在每次值更改时触发一次。这意味着您的回调可以被多次调用。由于承诺只能解决一次或失败一次,因此on不会返回承诺。
看来您的查询现在不返回任何结果,因此snapshot.val()返回null。然后Object.keys(null)抛出一个错误。所以像这样的事情更接近:
this.managerList = this.afDB.database.ref('users').orderByChild('managedby').equalTo(uID);
this.managerList.on('value', (snapshot) => {
if (snapshot.exists()) {
this.managerIdArray = Object.keys(snapshot.val());
this.managerNameArray = snapshot.val();
};
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2416 次 |
| 最近记录: |