1

我怎样才能得到函数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());
});
4

2 回答 2

1

您不太可能获得Meteor.userId()instartup函数,因为来自订阅的数据(例如谁登录)将需要很短的时间才能到达,此时启动已经完成。

改用Tracker.autorun()

Tracker.autorun(function() {
    if(Meteor.userId()) {
        ///
    }
});

请注意,这将在用户登录时运行。为了确保它只运行一次,您可以使用Session可以存储其运行次数的 a ,并在它运行多次时停止它。

于 2013-05-27T20:13:50.033 回答
0

错误消息中明确提到了答案。顺便说一句,您需要在尝试打印之前检查是否已登录。

Meteor.startup(function() {
    if (this.userId)
        console.log(this.userId);
});
于 2013-05-27T19:57:30.700 回答