我想在服务器上使用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."
//.......
}
});
感谢您的关注。
答案 0 :(得分:2)
在observe
回调中,this
关键字未指向发布对象(它指向相关查询的光标),因此它没有userId
属性
您可以使用
创建一个闭包以使userId
可用于该函数
const userId = this.userId;
在发布本身,然后在回调中使用它(如userId
)。