我试着让下面的发布功能起作用。我想检索所有没有当前用户在其profile.classes
数组中具有的类的用户。我在这里做错了什么?
Meteor.publish('classes', function () {
var class = Meteor.users.find({_id: this.userId},{fields: {"profile.classes": 1}});
var users = Meteor.users.find({
roles:'is_student',
"profile.classes": { $ne : class }
}});
return users;
});
答案 0 :(得分:2)
假设profile.classes
包含一个字符串数组,并且您希望获得当前用户类中没有类的所有用户,这里有一些代码可以满足您的要求:
Meteor.publish('classes', function ( ) {
var user = Meteor.users.findOne({_id: this.userId},{fields: {"profile.classes": 1}});
if( user && user.profile && user.profile.classes ) {
return Meteor.users.find({ roles: 'is_student', 'profile.classes': { $nin: user.profile.classes } });
} else {
return this.ready();
}
});
该代码的重要部分是:
return Meteor.users.find({ roles: 'is_student',
'profile.classes': { $nin: user.profile.classes } });
这里的关键部分是$nin
。来自MongoDB documentation:
$nin
选择以下文件:
- 字段值不在指定的数组或
中 - 该字段不存在。
因此,这应该选择没有profile.classes
数组字段的用户,或者没有当前用户所拥有的类。