首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >防火墙用户photoURL和displayName

防火墙用户photoURL和displayName
EN

Stack Overflow用户
提问于 2017-11-16 16:15:07
回答 1查看 1.4K关注 0票数 2

我有一段时间试图把我认为是一个简单的概念包围我的头脑。

我有一个应用程序,我注册了一个用户,允许该用户在Firebase系统中为他们的“用户”信息设置“photoURL”。这个很管用。当用户在我的应用程序中创建一个帖子时,我希望显示创建者的标题、图像和'photoURL‘。

目前,我保留这个职位:

代码语言:javascript
运行
复制
-Post {
 -id
 -title
 -image
 -photoURL <- from current logged in user }

我还允许用户通过路由/海报/“displayName”访问海报页面

因此,稍后,当用户更新他们的配置文件信息(如displayName或photoURL )时,我是否需要查找该用户拥有记录的所有帖子、评论、消息、回复和其他任何地方,并更新photoURL?

我认为我能做的是说:(伪代码)

代码语言:javascript
运行
复制
get all posts =>
 foreach(post)
   post = {
          title: post.title.val()
          image: post.image.val()
          avatar: firebase.database().ref().child('users' + post.key)
          }

我读到的所有东西都说我需要将photoURL存储在我自己的“用户”表中。如果我这样做,那么所有的帖子都不会被更新,除非我每次都会写一个服务器调用来完成这个任务。问题是,如果我有100 K用户,其中10%的用户更改了他们的photoURL,那么我必须在每个用户的帖子、评论、回复和消息中更改它。如果平均每个用户有100个帖子,4000条评论,6000条回复,我们将看到大约10K个必须更新的10K用户,如果平均服务器呼叫是137 my,那么我的成本大约是175美元(成本)。

另一种选择是每次从两个表中提取信息并创建一个新对象。这将导致服务器调用和时间增加一倍,从而使我的成本翻一番。

这是最好的方法吗?我认为这会更容易得到用户的照片和显示名称。

很抱歉,这是一篇史诗般的长篇文章,但我正在努力学习。谢谢大家!

EN

Stack Overflow用户

回答已采纳

发布于 2017-11-16 16:22:17

在使用noSQL数据库时,您描述的是一个典型的问题。一方面,数据复制使您的应用程序及其查询运行得更快。另一方面,如果您想要更改任何重复的数据,则查找和替换所有出现的数据可能会有问题。

没有“最佳”的方法来决定该做什么。完全取决于你的特殊情况。听起来,如果您有大量的数据复制,而更新成本很高,那么最好每次只查询用户记录,而不是进行更新。但再说一次,这最终取决于你。

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

https://stackoverflow.com/questions/47334382

复制
相关文章

相似问题

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