如何在发布(服务器端)流星中获取用户facebook id

如何在发布(服务器端)流星中获取用户facebook id,facebook,meteor,publish-subscribe,Facebook,Meteor,Publish Subscribe,我有一个facebook请求对话框,用于邀请朋友访问我的应用程序,当然,我会收到一个带有被邀请用户id的响应,然后我会将其存储在名为“组”的集合中,位于用户文档下:看起来是这样的: { "creator" : "qzD5X33Jejq5BYRdZ", "name" : "Soccer", "emailAt" : 4, "date" : "10/31/2013", "friends" : [ "dude dude", "another dude" ], "location" : "xxx",

我有一个facebook请求对话框,用于邀请朋友访问我的应用程序,当然,我会收到一个带有被邀请用户id的响应,然后我会将其存储在名为“组”的集合中,位于用户文档下:看起来是这样的:

{ "creator" : "qzD5X33Jejq5BYRdZ", "name" : "Soccer", "emailAt" : 4, "date" : "10/31/2013", "friends" : [  "dude dude",  "another dude" ], "location" : "xxx", "rules" : "Soccer", "desc" : "Soccer", "users" : [  "100006794617787",  "100006832923859" ], "_id" : "ZMgzuy88EiSWF6xnS" }
在我的发布功能中,我只希望创建者和用户拥有这个组,我知道要访问用户集合,我需要使用
this.user
,在客户端,我使用
Meteor.user()
所以我试了一下:

Meteor.publish("Teams",function(){
    return Groups.find({creator:this.userId},{users:this.user.services.facebook.id},{fields:{
        date:false,
        desc:false,
        rules:false,
        friends:false,
        location:false,
        emailAt:false
    }});
});
但是你可以猜到这是行不通的,有什么建议可以让它起作用吗?
注意:我只使用facebook登录,因此使用facebook id非常方便。

我不确定您是否可以直接调用此用户。(我想)。您需要解决它,而不是
此。用户
使用
用户
并解决它:

var user = Meteor.users.findOne({_id: this.userId});
另一个是一个小的打字错误:):

而不是

return Groups.find({creator:this.userId}, {users:this.user.services.facebook.id}...

我不确定您是否可以直接调用
this.user
(我想)。您需要解决它,而不是
此。用户
使用
用户
并解决它:

var user = Meteor.users.findOne({_id: this.userId});
另一个是一个小的打字错误:):

而不是

return Groups.find({creator:this.userId}, {users:this.user.services.facebook.id}...

试过了,没用,我想我不能打电话给服务部。。。。在publish函数内部,有可能吗?是的,我得到一个错误:“无法读取未定义的I2048-22:50:04.807(3)的属性‘服务’?”在Meteor.publish.Groups.find.creator[作为_handler](app/server/publishes/main.js:16:57)“您是否也将
this.user
更改为
user
,如上所示,是否需要将其解析为有效用户?
services
属性应该在服务器上的任何位置都可用是的,我已经更改了它,这是我的完整代码:var user=Meteor.users.findOne({u id:this.userId})//对于主页Meteor.publish(“Teams”,function(){return Groups.find({creator:this.userId},{users:user.services.facebook.id},{字段:{date:false,desc:false,rules:false,friends:false,location:false,emailAt:false};});
var user
resolver必须位于publish方法内部,因此每个用户在获取组列表时都有自己的变量实例。如果尝试了,则无法工作,我想我无法调用服务。。。。在publish函数内部,有可能吗?是的,我得到一个错误:“无法读取未定义的I2048-22:50:04.807(3)的属性‘服务’?”在Meteor.publish.Groups.find.creator[作为_handler](app/server/publishes/main.js:16:57)“您是否也将
this.user
更改为
user
,如上所示,是否需要将其解析为有效用户?
services
属性应该在服务器上的任何位置都可用是的,我已经更改了它,这是我的完整代码:var user=Meteor.users.findOne({u id:this.userId})//对于主页Meteor.publish(“Teams”,function(){return Groups.find({creator:this.userId},{users:user.services.facebook.id},{字段:{date:false,desc:false,rules:false,friends:false,location:false,emailAt:false};});
var user
解析器必须位于publish方法内部,因此每个用户在获取组列表时都有自己的变量实例