我错过了什么?我在server
文件夹中有这个发布者:
Meteor.publish("myBooks", () => {
console.log(this.userId);
return Books.find({
owner: this.userId
});
});
this.userId
始终未定义,无论我是否登录。我使用Meteor.loginWithFacebook
调用(在client
文件夹中)使用我的个人资料登录。
答案 0 :(得分:4)
您正在使用fat arrow syntax来定义将this
与词法范围联系起来的函数,即 gloabal 范围,或最近父函数的范围, NodeJS的案例。由于父作用域中可能未定义userId
,因此您看到this.userId
为undefined
。
使用function
表单修复代码中的上下文(即this
):
Meteor.publish("myBooks", function () {
console.log(this.userId);
return Books.find({
owner: this.userId
});
});