Položky Courses
Sbírka je to, co publikujete.
Když tedy zadáte dotaz pomocí Courses.find({"canEditCourse": { $in: [ this.userId ] } });
canEditCourse
pole je to, co se pokoušíte porovnat s userId
(doslova to znamená najít všechny kurzy, kde je canEditCourse
pole obsahuje ID uživatele.)
Nechápu, proč byste zde místo toho chtěli používat uživatelské jméno. co ti to dává?
Pokud to chcete udělat, musíte mít canEditCourse
pole je pole username
a ne userId
.To znamená, že musíte změnit logiku, kde se kurzy vytvářejí nebo upravují a kde se toto pole vyplňuje.
Nejste si jisti, zda to stojí za ty potíže. Pokud chcete vyhledat kurzy podle uživatelského jména, pak vyhledejte uživatele podle uživatelského jména, získejte jeho/její userId a vyhledejte kurzy podle userId.
Meteor.publish('editableCourses', function (username) {
var myUser = Meteor.users.findOne({'username': username});
return Courses.find({"canEditCourse": { $in: [ myUser._id ] } });
});