sql >> Base de Datos >  >> NoSQL >> MongoDB

Meteor:cómo escribir una función de publicación que contenga el nombre de usuario

Ítems de los Courses La colección es lo que estás publicando.

Entonces, cuando consulta con Courses.find({"canEditCourse": { $in: [ this.userId ] } }); el canEditCourse el campo es lo que está tratando de hacer coincidir con un userId (literalmente significa encontrar todos los cursos donde canEditCourse matriz contiene el ID de usuario.)

Sin embargo, no veo por qué querrías usar el nombre de usuario aquí. ¿Qué te da eso?

Si desea hacer esto, debe tener el canEditCourse el campo sea una matriz de username y no userId .Eso significa que debe cambiar la lógica en la que se crean o editan los cursos y en la que se completa este campo.

No estoy seguro de que valga la pena. Si lo que desea es buscar cursos por nombre de usuario, busque el usuario por nombre de usuario, obtenga su ID de usuario y busque los cursos por ID de usuario.

Meteor.publish('editableCourses', function (username) {
    var myUser = Meteor.users.findOne({'username': username});
    return Courses.find({"canEditCourse": { $in: [ myUser._id ] } });
});