我怎样才能得到函数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());
});
我怎样才能得到函数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());
});
您不太可能获得Meteor.userId()
instartup
函数,因为来自订阅的数据(例如谁登录)将需要很短的时间才能到达,此时启动已经完成。
改用Tracker.autorun()
:
Tracker.autorun(function() {
if(Meteor.userId()) {
///
}
});
请注意,这将在用户登录时运行。为了确保它只运行一次,您可以使用Session
可以存储其运行次数的 a ,并在它运行多次时停止它。
错误消息中明确提到了答案。顺便说一句,您需要在尝试打印之前检查是否已登录。
Meteor.startup(function() {
if (this.userId)
console.log(this.userId);
});