如何在observe回调中获取userId

时间:2016-05-15 06:14:22

标签: meteor meteor-accounts meteor-collections meteor-useraccounts

我想在服务器上使用observe来获取我的一个集合,但我需要获取userId, 我尝试使用this.userIdMeteor.userId()但是没有工作!请参阅以下代码以获取更多详细信息和错误消息 如何解决?

Messages.find({state:"outbox"}).observe({
    added:  (doc) => {
    console.log(" observe ");
        console.log("userId : " + this.userId);  // undefined
        console.log("Meteor.userId(): " + Meteor.userId()); //  "Exception in queued task: Error: Meteor.userId can only be invoked in method calls. Use this.userId in publish functions."
        //.......
   }
});

感谢您的关注。

1 个答案:

答案 0 :(得分:2)

observe回调中,this关键字未指向发布对象(它指向相关查询的光标),因此它没有userId属性

您可以使用

创建一个闭包以使userId可用于该函数
const userId = this.userId;

在发布本身,然后在回调中使用它(如userId)。