此流星应用程序需要根据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"
答案 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}
});