Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor在启动函数中获取用户ID_Meteor - Fatal编程技术网

Meteor在启动函数中获取用户ID

Meteor在启动函数中获取用户ID,meteor,Meteor,如何在Meteor.startup中获取用户ID,有什么想法吗?我需要它来运行每10秒ping一次的循环,但我得到的只是错误:Meteor.userId只能在方法调用中调用。在发布函数中使用this.userId。 我的代码: Meteor.startup(function() { console.log(Meteor.userId()); }); 错误消息中清楚地提到了答案。顺便说一下,在打印之前,您需要检查是否已登录 Meteor.startup(function() {

如何在Meteor.startup中获取
用户ID
,有什么想法吗?我需要它来运行每10秒ping一次的循环,但我得到的只是
错误:Meteor.userId只能在方法调用中调用。在发布函数中使用this.userId。

我的代码:

Meteor.startup(function() {
    console.log(Meteor.userId());
});

错误消息中清楚地提到了答案。顺便说一下,在打印之前,您需要检查是否已登录

Meteor.startup(function() {
    if (this.userId)
        console.log(this.userId);
});

错误消息中清楚地提到了答案。顺便说一下,在打印之前,您需要检查是否已登录

Meteor.startup(function() {
    if (this.userId)
        console.log(this.userId);
});

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

改用
Tracker.autorun()

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

请注意,无论用户何时登录,此操作都会运行。为了确保它只运行一次,您可以使用一个
会话
,该会话可以存储它的运行次数,如果它运行不止一次,则停止它。

您不太可能在
启动
函数中获得
Meteor.userId()
,因为来自订阅的数据(如登录用户)需要很短时间才能到达,到那时,启动将完成

改用
Tracker.autorun()

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

请注意,无论用户何时登录,此操作都会运行。为了确保它只运行一次,您可以使用一个
会话
,该会话可以存储它的运行次数,并且在它运行多次时停止它。

我尝试了
这个.userId
,但作为一种方法,您可以尝试
Meteor.userId()
。不管怎么说,似乎很有效。它不会发送任何错误,但也不会与登录的用户联系
this.userId
始终是
未定义的
。我尝试了
this.userId
,但作为一种方法,您将尝试
Meteor.userId()
。不管怎么说,似乎很有效。它不会发送任何错误,但也不会与登录的用户联系
this.userId
始终是
undefined
。在
Deps.autorun
内部调用
Meteor.userId()
会导致另一个错误:
error:Meteor代码必须始终在光纤内运行
您在服务器上执行此操作吗?。除非客户机向服务器发出请求(即发布函数、方法或某种调用),否则无法在任何地方获取用户Id。因为在没有与客户端进行某种形式的通信的情况下,无法区分哪个用户登录,因此在
启动中不可能这样做
&Deps.autorun仅在客户端上运行。我是个哑巴。这颗流星让我有点发散了。哈哈,我不会那么说的。最好使用来自客户端的Meteor.call,而不是像上面那样在Deps.autorun中使用,这样一旦他们登录,服务器端就会发生一些事情调用Meteor.userId()
inside
Deps.autorun
结果出现另一个错误:
错误:Meteor代码必须始终在光纤中运行
您是否在服务器上执行此操作?。除非客户机向服务器发出请求(即发布函数、方法或某种调用),否则无法在任何地方获取用户Id。因为在没有与客户端进行某种形式的通信的情况下,无法区分哪个用户登录,因此在
启动中不可能这样做
&Deps.autorun仅在客户端上运行。我是个哑巴。这颗流星让我有点发散了。哈哈,我不会那么说的。最好使用来自客户端的Meteor.call,而不是像上面那样在Deps.autorun中运行,这样一旦他们登录,服务器端就会发生一些事情