Itens dos
Courses Coleção é o que você está publicando. Então, quando você consulta com
Courses.find({"canEditCourse": { $in: [ this.userId ] } }); o canEditCourse campo é o que você está tentando corresponder a um userId (literalmente significa encontrar todos os Cursos onde o canEditCourse array contém o userId.) Não vejo por que você gostaria de usar o nome de usuário aqui. O que isso te dá?
Se você quiser fazer isso, então você precisa ter o
canEditCourse campo seja uma matriz de username e não userId .Isso significa que você precisa mudar a lógica onde os Cursos são criados ou editados e onde este campo está sendo preenchido. Não tenho certeza se vale a pena. Se o que você quer é procurar Cursos por nome de usuário, procure o Usuário por nome de usuário, obtenha seu userId e procure os Cursos por userId.
Meteor.publish('editableCourses', function (username) {
var myUser = Meteor.users.findOne({'username': username});
return Courses.find({"canEditCourse": { $in: [ myUser._id ] } });
});