angular - 从 firedatabase 角度检索属性
问题描述
我试图从我的 firebase 集合用户那里获取属性名称。我用这个功能创建了一个服务。
getUserMessage(UserID: string) {
return this.db.collection('users', ref => ref.where('uid', '==', UserID).valueChanges();
}
这很好,因为当我通过这种方式从另一个组件检索数据时
getUser(UserID: string) {
setTimeout(() => {
const userName : User = this.chatService.getUserMessage(UserID).subscribe((data) => {
console.log(data);
return data;
});
}, 1000);
}
使用 console.log 我收到 {email: "XXXX", name: "xxxx", uid="xxxx"}。但是当我尝试使用 data.name 这说未定义。
注意:我使用 setTimeout 是因为当我在 chrome 中查看控制台时,这些控制台每毫秒打印一次,有没有办法让订阅只在特定时间起作用?
解决方案
我使用 .map() 解决了这个问题
`getUser(UserID: string) {
this.chatService.getUserMessage(UserID).subscribe((data) => {
this.name = data.map(a => {return a["name"];});
return this.name;
});
}`
另一方面,我在将其显示为函数 {{getUser(parameter)}} 时遇到问题。使用 console.log() 我检索名称,所以我认为该函数已被弹出,但在标签中这不会出现在 html 组件中。例子:
<ion-label> {{this.getUser(mensaje.user_id)}} </ion-label>
推荐阅读
- angular - ng4-Tag-Input 错误:模块 'CVModule' 导入的预期值 'TagInputModule'。请添加@NgModule 注释
- javascript - firestore 两次添加数据并且不让我拥有 UID
- c# - C# listview 子项未显示
- django - 需要登录会话 Selenium 的 Django 中的测试视图
- php - 如果两次上传相同的文件名,如何在laravel中显示错误消息
- python - 逻辑回归数据的完全分离
- php - 我在这个 foreach 循环中做错了什么?
- javascript - 将 props 传递给封装在 HOC 中的 React Redux 连接组件
- javascript - Vue.js - 在悬停时添加删除按钮并在按下按钮时删除它
- asp.net - 用户“SQLLogin”的 Asp.net LocalDB (SQL) 登录失败