Courses
のアイテム コレクションはあなたが公開しているものです。
したがって、Courses.find({"canEditCourse": { $in: [ this.userId ] } });
でクエリを実行すると canEditCourse
フィールドは、userId
に一致させようとしているものです (文字通り、canEditCourse
が存在するすべてのコースを検索することを意味します 配列にはuserIdが含まれます。)
ただし、ここで代わりにユーザー名を使用する理由がわかりません。それはあなたに何をもたらしますか?
これを実行したい場合は、canEditCourse
が必要です。 フィールドはusername
の配列です userId
ではありません つまり、コースが作成または編集され、このフィールドが入力されるロジックを変更する必要があります。
トラブルに見合うだけの価値があるかどうかはわかりません。ユーザー名でコースを検索する場合は、ユーザー名でユーザーを検索し、ユーザーIDを取得して、ユーザーIDでコースを検索します。
Meteor.publish('editableCourses', function (username) {
var myUser = Meteor.users.findOne({'username': username});
return Courses.find({"canEditCourse": { $in: [ myUser._id ] } });
});