首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在js中建立声誉/业力系统

在js中建立声誉/业力系统
EN

Stack Overflow用户
提问于 2018-04-18 15:53:07
回答 2查看 125关注 0票数 0

下面是我被绊倒的原因:

  • 当用户上传一篇文章时,他们会得到+2业力。
  • 当用户拒绝发布某篇文章时,他们会得到+2业力。
  • 当用户取消/移除他们的投票时,他们会得到-2业力。(净额0)
  • 被否决的用户会得到-2的业力。
  • 被否决的用户会得到+2的业力。
  • 当某人取消/删除他们的投票时,发帖的用户获得-2 (如果是向上投票)和+2 (如果是否决)。(净额0)

我不知道这是否有意义,但本质上我想奖励那些投了一票的人,并惩罚那些创造糟糕职位的人。

以下是我所拥有的:

在我的数据库中,当一个帖子获得向上投票时,this.userVote1,反对票是-1,而删除他们的选票则是0

代码语言:javascript
复制
upvote() {
   let vote = this.userVote == 1 ? 0 : 1;
   this.database.list('/upvotes/'+this.postData.id).set(this.userData.uid, vote)
}

downvote() {
    let vote = this.userVote == -1 ? 0 : -1;
    this.database.list('/upvotes/'+this.postData.id).set(this.userData.uid, vote)
}

因此,正如我前面所描述的,它的工作方式与预期的一样。

问题是,我不知道如何设置业力,以使它按预期工作。

我目前正在做以下行来更新用户业力以及海报业力:

代码语言:javascript
复制
this.database.database.ref('users/'+this.userData.uid).update({'karma': this.userKarma + karma}) //this.userKarma is the users karma
this.database.database.ref('users/'+this.postData.uid).update({'karma': this.postKarma + karma}) //this.postKarma is the karma of the user who created the post

我应该如何设置变量karma,就像我前面提到的那样。

有什么建议吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-23 00:20:22

最后我解决了这个问题:

代码语言:javascript
复制
getKarmaDelta(prevVote, vote) {
    if((prevVote !== 1 && prevVote !== -1) && (vote === 1 || vote === -1)) {
      this.updateUserKarma(2)
    } else if (vote === 0) {
      this.updateUserKarma(-2)
    }
      if(vote === -1 || (vote === 0 && prevVote === 1)) {
        this.updatePosterKarma(-2)
      } else if (vote === 1 || (vote === 0 && prevVote === -1)) {
        this.updatePosterKarma(2)
      }
  }

希望这能帮到别人。

票数 0
EN

Stack Overflow用户

发布于 2018-04-18 16:00:23

你可以用火柴交易系统。事务是原子化更新数据的一种方式(在firebase中没有真正的原子性)。

例如,将业力减少1。

代码语言:javascript
复制
this.database.database.ref('users/'+this.userData.uid).child('karma')
    .transaction(function(karma){
        if (!karma)
            return 0;
        return karma - 1;
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49904031

复制
相关文章

相似问题

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