【问题标题】:Add rating to value and calculate average in Firebase将评分添加到值并计算 Firebase 中的平均值
【发布时间】:2017-04-16 08:56:08
【问题描述】:

我想知道是否可以从 1-5 对一件事进行评分,然后计算其平均值?例如,我有“rate”:0 的产品“milk”。 能不能统计一下有多少用户给它评分然后计算率/有多少用户给评分=评分?

为了清楚起见:我给牛奶打 3 分,你给它打 1 分,那么平均值是 (3+1)/2 = 率:2

我应该在用户端进行此计算还是可以在 Firebase 端进行?

我应该使用什么逻辑?

最难的事情是统计有多少用户对产品进行了评分。我想我可以做其他事情。

我应该创建新的 key:value 之类的计数并在每次用户评分时增加计数吗?

编辑:我尝试过这样的事情,但这会导致 nil:

let rate =  self.productsValue[indexPath.row]["rate"] as? Int
            print("rate",rate)
let count = self.productsValue[indexPath.row]["count"] as? Int
            print("count",count)            
let rating = Int(rate!) / Int(count!)
            print(rating)

【问题讨论】:

  • 服务端计算之前已经讲过几次了:stackoverflow.com/questions/33643147/…
  • 好的。所以我只需要在用户端做。
  • 在其中添加一个单独的节点来保持编号。投票的用户应该做这项工作。

标签: swift firebase firebase-realtime-database


【解决方案1】:

为了同时获得平均评分和给它一定评分的用户数量,我建议使用这种 JSON 树:

Products
  Milk:
    ...
    nrOfUsersGivenRating0: 15
    nrOfUsersGivenRating1: 54
    nrOfUsersGivenRating2: 12
    nrOfUsersGivenRating3: 32
    nrOfUsersGivenRating4: 21
    nrOfUsersGivenRating5: 65

然后您可以在客户端计算投票的用户总数、平均评分,并轻松获得为某个评分投票的用户数。希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-13
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多