gpt4 book ai didi

文档中的 Angular FireStore 集合

转载 作者:太空狗 更新时间:2023-10-29 17:05:36 24 4
gpt4 key购买 nike

我正在尝试使用 Firebase FireStore 数据库在 Angular 2 中构建一个聊天应用程序。
我能够创建一个 Collection,每个“消息”都有一个 Docuement。我使用这段代码来检索消息:

export interface MessageItem {
message: string;
DateTime: Date;
User: string;
}

messagesCollection: AngularFirestoreCollection<MessageItem>;
messages: Observable<MessageItem[]>;

getChatData() {
this.messagesCollection = this.afs.collection<MessageItem>('chat_messages');
this.messages = this.messagesCollection.valueChanges();
}

但是,因为我需要多个用户,所以我想为每个用户创建一个 Document,它存储在消息的 Collection 中。
这使它变得复杂,我不确定如何准确地做到这一点。
我很乐意提供一些指导。

最佳答案

您可以采用的方法是,与其将文档集合存储为“消息”,不如创建一个“对话”集合,然后在每个“对话”文档中有一个简单的“DocumentReferences”数组引用该对话中的两个用户。您也可以只存储每个用户的 UID,然后在必要时获取用户。然后,在“对话”文档中,您将拥有两个用户之间的消息集合。这是我会采用的方法,如果您需要更多帮助,我可以创建模型服务和数据结构以作为示例显示。简而言之,首先存储对话将有助于此处的结构。

这是我将如何设置 Firestore 结构的示例:

enter image description here

在对话集合中,我会为用户存储一组 DocumentReferences,然后收集与此对话相关的消息。

enter image description here

现在在用户集合中,我将为每个用户创建一个文档,其中文档 ID 是来自经过身份验证的用户的 UID。这似乎是多余的,但我还会在用户集合中创建一个对话集合,其中每个文档只有一个字段,即对话文档的 DocumentReference。这是 convos 集合中该文档的示例:

enter image description here

这样您就可以阻止用户在 Conversations 集合中创建重复的对话文档,并且您只需要确保在对话开始后将对话引用保存到每个用户的 convos 集合中。

从服务中获取数据时,您需要进行快照更改并获取该引用路径,然后在快照上请求 map 函数内部的对话。如果您在创建此服务并使用 angularfire2 设置服务后需要有关服务的指导,请告诉我。

关于文档中的 Angular FireStore 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47530050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com