sql >> Databáze >  >> NoSQL >> MongoDB

Meteor:Jak napsat publikační funkci obsahující uživatelské jméno

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 ] } });
});



  1. Přístup k MongoDB přímo přes JavaScript

  2. vyřešení slibu pomocí mongodb a nodejs

  3. MongoDB (noSQL), kdy rozdělit kolekce

  4. pomocí $ as $match v mongodb