すべてのユーザーが利用できる「タスク」のコレクションがあります。ユーザーは、「タスクを完了した」ことにチェックを入れることができます。これを行うと、「usersCompleted」というタスク ドキュメントに添付されている配列に userId を追加するメソッドが呼び出されます。ユーザーがタスクを完了した場合、そのユーザー ID はその配列に含まれます。
この配列をクライアントに公開したくありません。すべてのユーザーが他の userId を含む配列にアクセスできるようになるためです。
ただし、ユーザーの ID がこの配列にあるかどうかを確認し、「checked」または「」を返すヘルパーが必要です。このようにして、ユーザーは完了したタスクを確認できます。
私の出版物では、ユーザーが完了したすべてのタスクを見つけることができますが、「usersCompleted」配列から ID だけを返すことはできません。誰かが私を助けることができれば、それは大歓迎です。
以下は私の現在のコードですが、 $elemMatch が正しく使用されていません
Meteor.publish( 'tasks.single.lesson.completed', function(lessonNumber) {
check(lessonNumber, Number);
if(this.userId) {
return Tasks.find({ lesson: lessonNumber, usersCompleted: this.userId} , {fields: { $elemMatch: {usersCompleted: this.userId}}});
} else {
this.stop();
return;
}
});