我的数据库包含两个表格'使用消息和用户,消息具有与userID匹配的senderID。我在使用以下代码在获取数据时将这两者连接在一起
this.messages = this.af.database.list(`/messages/1`)
.map(messages => {
messages.map(message => {
this.af.database.object('users/' + message.sender)
.subscribe(user => {
message.userdata = user;
console.log(message);
});
return message;
});
return messages;
});
消息上的 console.log显示了我所遵循的结构,但是,当我使用{{item.userdata.provider.displayName}}
时,它会给我以下TypeError: Cannot read property 'provider' of undefined
感谢您的建议。
答案 0 :(得分:1)
您不能依赖于正在填充的message.userdata。您正在进行异步调用以从服务器获取数据,但不会在呈现UI之前等待所有用户下载。
此外,您应该考虑用户可能不存在的情况。因此,如果没有首先尝试{{item.userdata.provider.displayName}}
,您将无法使用item.userdata?
。
我猜有更好的方法可以解决这个问题,例如创建一个item.getUserName()
方法,可以更透明,更优雅地处理这些实现细节。