已发布的文档基于user.profile.prop进行过滤

时间:2017-02-26 03:08:44

标签: meteor

此流星应用程序需要根据user.profile.group的值向每个用户发布记录,但它会发布整个集合,即不过滤。
我做错了什么以及如何解决? THX

//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"

1 个答案:

答案 0 :(得分:0)

find()的第一个参数是过滤器,第二个是选项。你提供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}
    });