2017-02-26 4 views
0

Diese Meteor App muss Datensätze für jeden Benutzer basierend auf dem Wert user.profile.group veröffentlichen, aber es veröffentlicht den gesamten Satz, d. H. Nicht filtern.
Was mache ich falsch und wie repariere ich es? thxVeröffentlichte Dokumente Filter basierend auf user.profile.prop

//lib/collections.js 
MenuItemsCol = new Mongo.Collection('menuItemsCol'); 

//client/main.js 
Meteor.subscribe('menuItemsCol'); 

//server/publications.js 
MenuItemsCol.remove({app: 'abc'}); 
lib.mainMenuItems.forEach(function (item) { 
    if (item.app === 'abc') { 
    MenuItemsCol.insert(item); 
    } 
}); 

Meteor.publish('menuItemsCol', function() { 
    let menuGroup = ''; 
    if (this.userId) { 
    menuGroup = Meteor.users.findOne({_id: this.userId}).profile.menuGroup; 
    } 
    return MenuItemsCol.find({app: 'abc'}, {group: {$in: menuGroup.split('')}}, {sort: {createdAt: 1}}); 
}); 

//db.users.find(this.userId) shows 
profile" : { 
     "menuGroup" : "g" 

Antwort

0

das erste Argument für find() ist der Filter, der zweite die Optionen ist. Sie 3 Argumente liefern, und es sieht aus wie die ersten beiden sollen den Filter sein:

return MenuItemsCol.find({app: 'abc'}, {group: {$in: menuGroup.split('')}}, {sort: {createdAt: 1}}); 

Ich glaube, Sie dies bedeuten:

return MenuItemsCol.find({ 
     app: 'abc', 
     group: {$in: menuGroup.split('')} 
    }, 
    { 
     sort: {createdAt: 1} 
    }); 
Verwandte Themen