我想在服务器上使用observe作为我的一个集合,但我需要获得userId,我正在尝试使用this.userId
和Meteor.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
)。