2016-05-13 16 views
0

私は現在のユーザーが既に好きであるかどうかを確認するために、コレクション名の投稿にアクセスしようとしています。好きなら、好きなボタンを別の色で表示します。 問題は関数が2回呼び出されることです。流星の流星を使用中の流星の関数の多重アクセス

isLiked: function() { 
let self = this; 
console.log(); 
Meteor.call('posts.isLiked', self._id, (error, result) => { 
    console.log(result); 
    return result; 
}); 
} 

上記の関数は以下のようにposts.isLikedを呼び出す -

'posts.isLiked': (_id) => { 
    check(_id, String); 

    if (!Meteor.user()) { 
     throw new Meteor.Error(401, 'You need to be signed in to continue'); 
    } 
    if (!_id) { 
     throw new Meteor.Error(422, '_id should not be blank'); 
    } 

    return (Posts.find({ _id: _id , already_voted: { "$in" : [Meteor.userId()]} }).count() == 1); 
} 

コンソールは、出力を2回を示します。 ご協力いただければ幸いです。

答えて

0

あなたはES6関数を使用しているため、問題が発生する可能性があります。アプリケーションをデバッグするには唯一の解決策ですが、ES6 speicficationsの代わりに基本関数呼び出しを使用できますか?以下

は、私がお聞きしようとしているものです:

isLiked: function() { 
     let self = this; 
     console.log(); 
     Meteor.call('posts.isLiked', self._id, function(error, result) { 
      console.log(result); 
      return result; 
     }); 
    } 

    'posts.isLiked': function(_id){ 
    check(_id, String); 

    if (!Meteor.user()) { 
     throw new Meteor.Error(401, 'You need to be signed in to continue'); 
    } 
    if (!_id) { 
     throw new Meteor.Error(422, '_id should not be blank'); 
    } 

    return (Posts.find({ _id: _id , already_voted: { "$in" : [Meteor.userId()]} }).count() == 1); 
} 

はまた、あなたがMeteor.callが二度呼ばれていないことを知っているように、の最初の行で、コンソールログがをisLiked置くが、 isLikedが2回呼び出されている可能性があります。

+0

isLikedは2回呼び出されるため、流星の呼び出しも2回呼び出されます。 –

+0

どうすれば今すぐ手助けできますか?私たちはあなたのコードを持っていません、あなたは何をしていますか?なぜ2回呼ばれたのですか? –

+0

Htmlの部分で私は{{#if isLiked}}と一緒に使っています –