在Meteor.loginWithFacebook之后,this.userId未定义

时间:2015-10-28 11:41:23

标签: meteor meteor-accounts

我错过了什么?我在server文件夹中有这个发布者:

Meteor.publish("myBooks", () => {
    console.log(this.userId);
    return Books.find({
        owner: this.userId
    });
});

this.userId始终未定义,无论我是否登录。我使用Meteor.loginWithFacebook调用(在client文件夹中)使用我的个人资料登录。

1 个答案:

答案 0 :(得分:4)

您正在使用fat arrow syntax来定义将this与词法范围联系起来的函数,即 gloabal 范围,或最近父函数的范围, NodeJS的案例。由于父作用域中可能未定义userId,因此您看到this.userIdundefined

使用function表单修复代码中的上下文(即this):

Meteor.publish("myBooks", function () {
    console.log(this.userId);
    return Books.find({
        owner: this.userId
    });
});