MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Meteor:Como escrever uma função de publicação contendo o nome de usuário


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 ] } });
});