MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Meteor:Wie man eine Veröffentlichungsfunktion schreibt, die den Benutzernamen enthält

Items der Courses Sammlung ist das, was Sie veröffentlichen.

Wenn Sie also mit Courses.find({"canEditCourse": { $in: [ this.userId ] } }); abfragen der canEditCourse Feld ist das, was Sie versuchen, mit einer userId abzugleichen (Wörtlich bedeutet es, alle Kurse zu finden, bei denen canEditCourse Array enthält die Benutzer-ID.)

Ich verstehe jedoch nicht, warum Sie hier stattdessen den Benutzernamen verwenden möchten. Was bringt dir das?

Wenn Sie dies tun möchten, müssen Sie den canEditCourse haben field ein Array von username sein und nicht userId .Das bedeutet, dass Sie die Logik ändern müssen, wo die Kurse erstellt oder bearbeitet werden und wo dieses Feld ausgefüllt wird.

Ich bin mir nicht sicher, ob es die Mühe wert ist. Wenn Sie Kurse anhand des Benutzernamens suchen möchten, suchen Sie den Benutzer anhand des Benutzernamens, erhalten Sie seine/ihre Benutzer-ID und suchen Sie die Kurse anhand der Benutzer-ID.

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