Meteor 为什么当前用户在使用$ne后也会返回

Meteor 为什么当前用户在使用$ne后也会返回,meteor,Meteor,在服务器上我得到了这个 Meteor.publish('allusersbutme', function () { // every except the current use if (Meteor.userId) { return Meteor.users.find({_id: {$ne: Meteor.userId}}, {fields: {profile: 1, 'services.facebook': 1}}); } }); 关于我的客户 Meteor.su

在服务器上我得到了这个

Meteor.publish('allusersbutme', function () {

  // every except the current use
  if (Meteor.userId) {

    return Meteor.users.find({_id: {$ne: Meteor.userId}}, {fields: {profile: 1, 'services.facebook': 1}});
  }

});
关于我的客户

Meteor.subscribe('allusersbutme');

Template.discover.helpers(
        {
            users: function () {
                return Meteor.users.find({}).fetch();
            }
        });

用户助手仍在返回当前用户。如果我
返回Meteor.users.find({u-id:{$ne:Meteor.userId}).fetch()
,这就行了。这有点令人困惑。

您不能在发布函数中使用
Meteor.userId()
,对吗?我以为你必须使用
这个.userId
。此外,
Meteor.userId
是一个函数,因此您的查询将确保
\u id
$ne
函数
。。。我想这永远是真的


Meteor.publish
docs for
this.userId

你的回答帮助了我。谢谢我使用了这个。userId和Meteor。userId()是一个函数,但我仍然得到了当前用户!。唯一的方法是在客户端上执行此操作。@MurWade,登录用户总是发布到客户端,客户端上的集合将包含所有已发布文档的并集,因此如果您不希望登录用户,您必须始终在客户端上使用
{u id:{$ne:Meteor.userId()}
选择器。@PeppeL-G同意。我是在客户机上做的。我只是想让一切保持一致。就像服务器上的所有规则一样。但这并没有伤害到你。谢谢你,马文