如何在observe回调中获取userId



我想在服务器上使用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."
        //.......
   }
});

谢谢你的关注。

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

您可以创建一个闭包,使userId可用于使用的函数

const userId = this.userId;

在发布本身的主体中,然后简单地在回调中使用它(作为userId)。

最新更新