私はMeteorを初めて使い、To-Doリストのチュートリアル(https://www.meteor.com/tutorials/blaze/creating-an-app)を見て回りました。私は自動公開を削除し、すべてのタスクがプライベートであるように表示機能を設定しました(つまり、ユーザーは自分のタスクしか見ることができません)。すべてのタスクを表示するためにMeteorを使用して管理者アカウントを設定してください
ここでは、管理者アカウント管理者は誰の仕事も見ることができますが、他人は何も見ることができません。私はこれをappフォルダに既にダウンロードしてあるalanning-rolesパッケージを使ってやろうとしています。だけではなく、すべてのタスクを表示するので、私はif文ですべてのタスクを表示するには、コマンドを囲み、その後
const mod = 'E9Y4qtFXK2qQGAGq3'; // this is the userId of the account that I wish to make admin
Roles.addUsersToRoles(mod, 'moderator');
:私のtasks.jsファイルで
は、私が行を挿入した
if (Meteor.isServer) {
if (Roles.userIsInRole(this.userId,'moderator')) {
Meteor.publish('tasks', function tasksPublication() {
return Tasks.find();
});
}
}
モデレータ/ adminとしてログインしている場合はすべてのタスクが表示され、それ以外の場合は表示されません。しかし、私はこのコードを実行すると、私は管理者としてログインしているときにタスクが表示されません。私が設定したuserIdが正しいこと、そしてコレクションにタスクがあることは確かです。誰にも問題の可能性についてのアイデアはありますか?
(あるいは、これを行う方法上の任意の他の提案alanning-役割を使用する必要はありません - ?私はちょうどそれが最も簡単だろうと思った)
本当にありがとうございました -C
EDIT私はラインでの「MOD」と「this.userId」を交換する場合:
if (Roles.userIsInRole(this.userId,'moderator')){...}
すべてのタスクが表示されます。だから問題はthis.userIdの出力にあるようです。