Javascript 使用Meteor方法传递用户数组
我的服务器上有此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:
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使用回调,以便从服务器获得结果。回调是什么样子的?我目前没有,因为我没有把一个参数从客户端传递到服务器