如何使用Firebase实时数据库构建聊天应用程序以合并用户数据



截至目前,我正在使用Firebase实时数据库将聊天功能作为我正在开发的应用程序的一部分。我似乎遇到的唯一问题是弄清楚如何包含用户的数据(个人资料、用户名、生日等(,这样,如果用户点击聊天,然后,他们可以无缝地转到用户的配置文件页面,而无需从后端获取更多数据。以下是我在Firebase实时数据库中使用的当前结构:

$chats
$chatId
id
users
0: some user id
1: some user id
lastMessage
$userChats
$userId
$chatId: true
$users
$userId
user info here

在我的情况下,我想知道的是,将每个用户的所有用户数据复制到用户数组中的每个聊天中是否更有意义,或者我是否应该只使用引用的userId并在单独的请求中提取数据?

考虑到我主要将我的用户存储在一个单独的PostgreSQL数据库中,我想知道我是否可以对该数据库进行单独的查询,甚至不必担心将用户存储在实时数据库中(考虑到我必须包括每个用户的聚合信息,如计数器(。

如果总是在聊天时获取用户数据,那么应该将它们存储在一起。不需要打多个不必要的电话。

但是,如果您要单独获取用户数据和/或对话,我建议您将用户数据单独存储,而不是存储在对话中。

此外,如果你真的想要一个";立即的";感觉(除了已经"实时"的数据库性能之外(,您还可以在打开特定聊天后立即在后台获取用户数据。这样,如果用户点击查看配置文件,它将已经被提取,并将给出";"瞬时";您正在寻找的体验。

此外,您必须记住,无论调用多少次,实时数据库都会根据传输的数据量收费(而Firestore则根据查询次数收费(,因此与一个查询相比,单独存储数据根本不会增加计费,而且在不需要两个数据集的情况下,实际上可以节省资金。

最新更新