1

我想对服务器上的一个集合使用观察,但我需要获取 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."
        //.......
   }
});

谢谢你的关注。

4

1 回答 1

2

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

您可以使用创建一个闭包以使userId该函数可用

const userId = this.userId;

在发布本身的正文中,然后简单地在回调中使用它(as userId)。

于 2016-05-15T06:46:15.740 回答