2016-05-19 5 views
1

メソッドを介してカスタム "isContributor"フィールドをMeteor.Usersに追加しようとしていますが、何らかの形でフィールドを追加していません。 (私は誰がこのアップデートを行うことができるかの安全性チェックの前にも話している)。クライアント側ではMeteor - ユーザーカスタムフィールドを追加するメソッドが機能しない

私は次のイベントがあります。

Template.Articles.events({ 
'click #BeContributor': function() { 
    userId = Meteor.userId(); 
    Meteor.call('setContributorState', userId); 
} 

});

、サーバーに/次をmain.js:

Meteor.methods({ 
    setContributorState: function(userId) { 
     Meteor.users.update(userId, { 
      $set: { 
       isContributor: true 
       } 
     }); 
    } 
}); 

どういうわけか、それは私のユーザーのためのフィールドを追加しません。コンソールエラーやサーバーエラーはありません。私はフィールドを追加する権利の期間に何かを逃したと思う。何か案は ?

ありがとうございます。

--- EDITは---

実際の方法は、働いていたが、私はフィールドが更新されたことMeteorToysにチェックインができませんでしたので、私は結果が戻って公開していませんでした。以下の出版物で、それは動作します:

Meteor.publish(null, function(){ 
    return Meteor.users.find({_id: this.userId}, {fields: {isContributor: 1}}); 
}); 

はあなたがログインしているユーザーの貢献者のステータスを変更しようとしている場合は、任意のパラメータを渡す必要はありません Publishing custom Meteor.user() fields

+0

サーバーメソッドで 'console.log'を実行して、実際に呼び出されているかどうかを確認してください。 –

+0

ちょうどチェックされました:メソッドが呼び出され、それまでUserIdが適切に実行されています。アップデートはうまくいかないようです。 – Ivo

答えて

1

で発見します。これはセキュリティホールです。サーバーは要求を呼び出す情報を持っています。

Meteor.methods({ 
setContributorState: function() { 
    Meteor.users.update({_id:this.userId}, { 
     $set: { 
      isContributor: true 
      } 
    }); 
} 
}); 
+0

安全性の説明をありがとう。 – Ivo

関連する問題