2017-02-26 35 views
0

此流星应用程序需要基于user.profile.group的值向每个用户发布记录,但它正在发布整个集合,即不进行过滤。
我在做什么错,如何解决? THX已发布文档过滤器基于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" 

回答

0

用于找到第一个参数()是滤波器,第二个是选项。你提供3个参数,它看起来像前两个是为了成为您的过滤器:

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

我想你的意思是这样的:

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