MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Meteor :comment écrire une fonction de publication contenant le nom d'utilisateur

Eléments des Courses La collection est ce que vous publiez.

Ainsi, lorsque vous interrogez avec Courses.find({"canEditCourse": { $in: [ this.userId ] } }); le canEditCourse champ est ce que vous essayez de faire correspondre à un userId (cela signifie littéralement trouver tous les cours où le canEditCourse tableau contient l'ID utilisateur.)

Je ne vois pas pourquoi vous voudriez utiliser le nom d'utilisateur ici à la place. Qu'est-ce que ça t'apporte ?

Si vous voulez faire cela, alors vous devez avoir le canEditCourse champ être un tableau de username et non userId .Cela signifie que vous devez modifier la logique dans laquelle les cours sont créés ou modifiés et où ce champ est rempli.

Pas sûr que cela en vaille la peine. Si vous voulez rechercher des cours par nom d'utilisateur, recherchez l'utilisateur par nom d'utilisateur, obtenez son identifiant d'utilisateur et recherchez les cours par identifiant d'utilisateur.

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