如何向Meteor.users集合添加字段

如何向Meteor.users集合添加字段,meteor,Meteor,我希望Facebook accessToken存储在客户机上我的用户文档中。接下来,我应该添加一个新的发布调用 在server.js中: Meteor.publish("access_token", function () { return Meteor.users().find( { _id : Meteor.userId() }, {'services.facebook.accessToken': 1} ); }); Meteor.subscribe("acces

我希望Facebook accessToken存储在客户机上我的用户文档中。接下来,我应该添加一个新的发布调用

在server.js中:

Meteor.publish("access_token", function () {
  return Meteor.users().find(
    { _id : Meteor.userId() }, 
    {'services.facebook.accessToken': 1}
  );
});
Meteor.subscribe("access_token");
在client.js中:

Meteor.publish("access_token", function () {
  return Meteor.users().find(
    { _id : Meteor.userId() }, 
    {'services.facebook.accessToken': 1}
  );
});
Meteor.subscribe("access_token");
好吧,这是我迷路的地方。对于登录的用户,accessToken是否应该立即显示在Meteor.users集合中?比如:

var user = Meteor.users.findOne({ _id : Meteor.userId() }); 
console.log(user); // includes services.facebook.accessToken now
显然,我已经尝试了上面的方法,但是accessToken没有出现。是的,我已经确认mongo文档包含services.facebook

所以。。。我是否创建了一个新的客户端集合,并以某种方式将其连接到新的发布?如何获取accessToken?

您应该使用“字段”关键字


您可以发布所需的字段:

Meteor.publish( null, function() {
  Meteor.users.find({}, {fields: {profile: 1, username: 1, ...}})
}

事实上,您应该删除双括号,这会导致错误。如果我没有弄错的话,正确的答案是:
Meteor.users().find({u-id:this.userId},{fields:{extra\u-fields:1}})这并不总是正确的。例如,如果您公开用户集合(users online plugin),Meteor.users()将查找具有users.find的所有在线用户。