如何确保用户只能为每个帖子点击一次按钮?

时间:2016-06-29 08:22:06

标签: javascript meteor meteor-blaze

我想添加一个类似按钮。如果用户点击特定帖子的按钮,那个特定帖子的喜欢的数量应该增加1.但是如果他再次点击同一帖子的类似按钮的数量喜欢应该减少1.

在我的代码中,用户可以为每个帖子提供超过1个。如何更改?

Javascript代码是:

 Template.postItem.events({    
'click button':function(event){
            event.preventDefault();
            var documentId = this._id;

            this.likes=this.likes+1;
            console.log(this);
            Posts.update({ _id: documentId },{$set:{likes:this.likes}});
            }


            });

HTML code:

<template name="postItem">
    <li>
    {{_id}}
    <h4>{{name}}</h4>
    <i>Posted by {{postedBy}} on {{createdAt}}</i>
    <br>
    {{likes}}<button class="btn btn-default glyphicon glyphicon-hand-up" >Like</button>

这里{{button}}是postItem的帮助器,它返回每个帖子上like的数量值。

1 个答案:

答案 0 :(得分:0)

你可以在帖子文档中有一个变量&#34;喜欢&#34;作为包含喜欢帖子的用户ID的数组。

Post = {
   likes: [String]
}

您可以检查特定用户是否已经喜欢该帖子。

var Post = Posts.find({_id: documentId, likes: Meteor.userId()});

mongo的文档:https://docs.mongodb.com/manual/tutorial/query-documents/#match-an-array-element