Javascript 使用Meteor方法传递用户数组

Javascript 使用Meteor方法传递用户数组,javascript,meteor,Javascript,Meteor,我的服务器上有此Meteor方法: returnUsers: function(){ console.log(Meteor.users.find()); } 以下是我的客户电话: 'click #share_button': function(ev){ ev.preventDefault(); Meteor.call('returnUsers'); } 但它返回一个空数组: LocalCollection.Cursor{collection:

我的服务器上有此Meteor方法:

returnUsers: function(){
        console.log(Meteor.users.find());
}
以下是我的客户电话:

'click #share_button': function(ev){
        ev.preventDefault();
        Meteor.call('returnUsers');
 }
但它返回一个空数组:

LocalCollection.Cursor{collection:LocalCollection,sorter:null,\u selectorId:undefined,matcher:Minimongo.matcher,skip:undefined…}

如何返回所有用户的数组?

要从方法中返回数组,您需要查看文档。大概是这样的:

returnUsers: function() {
  var selector = {};
  var options = {fields: {username: 1}};
  return Meteor.users.find(selector, options).fetch();
}
Meteor.call('returnUsers', function(err, users) {
  console.log(users);
});
请注意,筛选字段以避免将所有用户的机密发送给客户端是至关重要的。有关更多信息,请参阅我文章中的“公开的秘密”部分

在不了解您的用例的情况下很难说,但与其使用方法,不如将部分用户的子集传递给您的客户端,而不是在事件中获取所有用户


为了从服务器返回结果,您应该调用如下方法:

returnUsers: function() {
  var selector = {};
  var options = {fields: {username: 1}};
  return Meteor.users.find(selector, options).fetch();
}
Meteor.call('returnUsers', function(err, users) {
  console.log(users);
});

现在我只是想证明我可以在点击事件中获得一个用户列表;这是为了让当前用户与其他用户共享文档。pubsub或method?如果您只需要该事件中的用户,则方法可能是合适的。如果您在多个地方需要这些用户,发布将是一个更好的选择。无论是哪种情况,我都建议添加某种选择器,这样就不会返回所有用户它仅返回客户端上的登录用户?,该值将为真,除非您发布了所有用户。在服务器上,它将返回数据库中的所有用户。确保对Meteor.call使用回调,以便从服务器获得结果。回调是什么样子的?我目前没有,因为我没有把一个参数从客户端传递到服务器