如何在userId
函数中获取Meteor.startup
任何想法?我需要它来运行一个每10秒ping一次的循环,但我得到的只是Error: Meteor.userId can only be invoked in method calls. Use this.userId in publish functions.
我的代码:
Meteor.startup(function() {
console.log(Meteor.userId());
});
答案 0 :(得分:1)
您不太可能在Meteor.userId()
函数中获得startup
,因为来自订阅的数据(例如谁登录)将需要一段时间才能到达,到那时启动会已经完成了。
改为使用Tracker.autorun()
:
Tracker.autorun(function() {
if(Meteor.userId()) {
///
}
});
小心这将在用户登录时运行。确保它只运行一次就可以使用Session
来存储它运行的次数,并在运行多次时停止它。
答案 1 :(得分:0)
错误消息中明确提到了答案。顺便说一下,在尝试打印之前,您需要检查是否已登录。
Meteor.startup(function() {
if (this.userId)
console.log(this.userId);
});