MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Meteor:come scrivere una funzione di pubblicazione contenente il nome utente

Articoli dei Courses La raccolta è ciò che stai pubblicando.

Quindi, quando esegui una query con Courses.find({"canEditCourse": { $in: [ this.userId ] } }); il canEditCourse campo è ciò che stai cercando di abbinare a un userId (significa letteralmente trovare tutti i Corsi in cui il canEditCourse array contiene l'ID utente.)

Tuttavia, non vedo perché dovresti usare il nome utente qui. Cosa ti prende?

Se vuoi farlo, devi avere il canEditCourse campo essere un array di username e non userId .Ciò significa che devi cambiare la logica in cui i Corsi vengono creati o modificati e dove viene compilato questo campo.

Non sono sicuro che ne valga la pena. Se quello che vuoi è cercare i corsi per nome utente, quindi cercare l'utente per nome utente, ottenere il suo ID utente e cercare i corsi per ID utente.

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