2016-06-29 5 views
0

私は好きなボタンを追加したいと思っています。特定の投稿のようなボタンをクリックすると、その特定の投稿の数が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コード:

<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> 

ここ{{ボタンが}}各ポスト上のような多数の値を返すpostItemのヘルパーです。

+0

:Mongoのため

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

ドキュメント。 – Thilo

+0

@Thiloどうすればいいですか? –

+2

おそらく 'Likes.insert({_id:documentId +" _ "+ userId})'です。そのような文書が存在するかどうかを確認することができます。 – Thilo

答えて

0

ポストドキュメントには、投稿を好きなユーザーのIDを含む配列として「好き」という変数を使用できます。

Post = { 
    likes: [String] 
} 

特定のユーザーが既に投稿を好きかどうかを確認できます。あなたは、ユーザーが既に投票している場合伝えることができるように各ポストのために、ユーザーごとにフラグを格納する必要がhttps://docs.mongodb.com/manual/tutorial/query-documents/#match-an-array-element

+0

ドキュメントが好きで、多数のユーザーに対応できない場合は、ドキュメントを更新する必要があります。 – Thilo

+0

@Thiloあなたは50M好き/分がなければ私は仕事をすることができると思います。 あなたのIDをどこかに保存して、ユーザーが既にその投稿を好きかどうかを確認する必要があります。 –

関連する問題