- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试查询一个集合并根据另一个查询返回更改数据结果。
我的聊天结构是这样的:
let chat = {
id: "userId1" + "userId2",
lastMessage: "",
timestamp: "",
title: ""
}
我需要拆分聊天ID,查询其中一个用户并将用户名设置为聊天标题。
我尝试这样做,但没有成功,也没有在模板上显示结果。
listChats(userId: string): Observable<any[]> {
return <Observable<any[]>>this.afs.collection(this.CHATS_COLLECTION)
.snapshotChanges()
.map((c) => {
return c
.filter((chat) => chat.payload.doc.id.startsWith(userId) || chat.payload.doc.id.endsWith(userId))
.map(c => {
const chatData = c.payload.doc.data() as Chat;
const chatId = c.payload.doc.id;
//the id here comes like "id1 + id2"
let ids: string[] = c.payload.doc.id.split(this.SEPARADOR);
//get the id
let id = ids[0];
//check in firebase the user row
return this.afs.doc("users/" + id)
.snapshotChanges()
.map((c) =>{
const data = c.payload.data() as User;
let name = data.name;
//Here I need to get the user name and set on the chat data
chatData.title = name;
return { chatId, ...chatData };
});
});
});}
聊天页面.ts:
ionViewDidLoad() {
this.chats = this.chatService.listChats(userId);
}
在模板上显示聊天:
<ion-list no-line>
<button ion-item *ngFor="let chat of chats | async" (click)="onOpenChat(chat)">
<h2>{{chat.title}}</h2>
</button>
</ion-list>
最佳答案
使用 .valueChanges()
订阅可观察对象。
ionViewDidLoad() {
this.chats = this.chatService.listChats(userId).valueChanges();
}
尝试这些改变
listChats(userId: string): Observable<any> {
return this.afs.collection(this.CHATS_COLLECTION)
.snapshotChanges()
.map((c) => {
return c
.filter((chat) => chat.payload.doc.id.startsWith(userId) || chat.payload.doc.id.endsWith(userId))
.map(c => {
const chatData = c.payload.doc.data() as Chat;
const chatId = c.payload.doc.id;
//the id here comes like "id1 + id2"
let ids: string[] = c.payload.doc.id.split(this.SEPARADOR);
//get the id
let id = ids[0];
//check in firebase the user row
return this.afs.doc("users/" + id)
.snapshotChanges()
.map((c) =>{
const data = c.payload.data() as User;
let name = data.name;
//Here I need to get the user name and set on the chat data
chatData.title = name;
return { chatId, ...chatData };
});
});
});}
关于javascript - AngularFirestoreCollection snapshotChanges 结果中的子查询数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48553590/
我正在尝试查询一个集合并根据另一个查询返回更改数据结果。 我的聊天结构是这样的: let chat = { id: "userId1" + "userId2", lastMessage: ""
我正在尝试在 Angular 4 应用程序中使用 Angularfire2。我可以使用 AngularFirestoreCollection 从我的 firestore 中获取对象集合。但是,当我遍历
我有以下代码 服务文件数据链接 private dbUser = '/users'; constructor(private firestore: AngularFirestore) { this.u
我将 Angularfire2 与新的 Firestore 数据库一起使用。在我的方法中,我正在执行这样的查询: const questionsRef = this.afs.collection('q
在我的应用程序中,我有一个需要“或”条件的列表。但是,正如docs say : In this case, you should create a separate query for each OR
我正在尝试根据传递到参数中的 URL 参数从 firestore 集合中获取特定文档,但是因为我已经使用 expensesCollection: AngularFirestoreCollection
我是一名优秀的程序员,十分优秀!