首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给定一组聊天室和一组聊天室元数据,我如何安全地更新两个聊天室中的相应聊天室?

给定一组聊天室和一组聊天室元数据,我如何安全地更新两个聊天室中的相应聊天室?
EN

Stack Overflow用户
提问于 2016-10-18 10:23:34
回答 1查看 237关注 0票数 0

为了练习在大型应用程序中使用Firebase,我正在制作一个具有多个聊天室的Firebase应用程序,类似于Firechat

理论上可以有数百万个聊天室,每个聊天室都有数百万条信息。

我希望能够显示一个聊天室名称的列表,包括一些关于每个聊天室的元数据,比如它的参与者数量。

从编码的角度来看,最简单的方法是加载所有聊天室,但这可能是大量的数据。

我的解决方案是有一个Chat数组和一个ChatInfo数组,前者包含所有聊天消息,后者包含关于每个聊天的元数据。

我的问题是:如何更新一个数组中的一个项,并确保另一个数组中的相应项也被更新,而不依赖于客户机?

我目前的解决办法是:

代码语言:javascript
复制
var chatData = {room_name: "Test Room"}
var chat = Chat.ref.push(chatData);
var chatMeta = ChatMeta.ref.push(chatData);
chat.update({chat_meta_id: chatMeta.key});
chatMeta.update({chat_id: chat.key});

这个很管用。然而,我觉得太依赖客户端了。

例如:如果客户端的Firebase连接在创建Chat之后而在创建ChatMeta之前死亡怎么办?当然,Firebase的速度很快,但是依赖前端代码来同步后端的东西感觉很糟糕。

一种解决方案是让所有“写”请求通过我控制的后端服务器,然后转到Firebase。但是整个“没有后端!”对于Firebase来说,事情是一个巨大的卖点,我想知道这是否可以避免。

在我看来,应该有某种方法对所有不同的Chat项进行“浅”查询,这样就没有必要保留一个ChatMeta数据的运行列表,或者在Firebase的末尾设置某种规则,每当Chat被更新时就更新ChatMeta。然而,这两种情况似乎都不存在。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-10-18 14:50:26

通过使用云函数,您可以避免过度依赖客户端和拥有受控的后端服务器。

在本例中,您将创建一个HTTP TRIGGER函数,并将您的room_name从客户端推送到它。云函数将执行您的需求并返回ChatMeta对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40105693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档