相关疑难解决方法(0)

Firebase数据库快速入门处理计数的方式是否安全?

我想为文章喜欢创建一个增量字段.

我指的是以下链接:https://firebase.google.com/docs/database/android/save-data#save_data_as_transactions

在示例中,有增量字段的代码:

if (p.stars.containsKey(getUid())) {
    // Unstar the post and remove self from stars
    p.starCount = p.starCount - 1;
    p.stars.remove(getUid());
} else {
    // Star the post and add self to stars
    p.starCount = p.starCount + 1;
    p.stars.put(getUid(), true);
}
Run Code Online (Sandbox Code Playgroud)

但是,我怎么能确定用户是否已经喜欢/不喜欢这篇文章?

在这个例子中,用户(黑客)也可以像这样清除整个星图,它会保存:

p.stars = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

它会破坏已经喜欢它的其他用户的逻辑.

我甚至认为你不能为此制定规则,尤其是"减少计数"行动.

任何帮助,建议?

android firebase firebase-realtime-database

16
推荐指数
1
解决办法
5396
查看次数

Firebase Fan out - 最具成本效益的方式?

我知道这个问题可能已多次提出,但我已经阅读了大部分可用的问题,但没有找到任何可以完全帮助回答我的问题.正如Firebase团队所建议的那样,扇出技术是确保快速数据读取的推荐方法,但却带来了数据复制的成本.我知道这个问题是主观的,取决于应用程序,但在节省成本($)和数据读取方面哪个是最佳解决方案?

  1. 在多个子节点中发布相同的节点(保存数据只读一次,但有冗余,因此消耗更多的Firebase存储)(参见图像Firebase数据库 - "扇出"技术)
  2. 仅发布一个节点,并通过其密钥对节点进行其他引用(不冗余并消耗较少的Firbase存储,但需要读取两次 - 获取密钥,并获取密钥的节点)(请参阅图像https:// stackoverflow. com/a/38215398/1423345)

对于上下文,我正在构建一个非盈利市场应用程序,因此我需要在节省成本($)和快速数据读取之间平衡应用最佳解决方案.

另一方面,读取两次(带宽)与更大的存储?哪一个更具成本效益?

firebase firebase-realtime-database

6
推荐指数
1
解决办法
1152
查看次数