Meteor在启动函数中获取用户ID
如何在Meteor.startup中获取Meteor在启动函数中获取用户ID,meteor,Meteor,如何在Meteor.startup中获取用户ID,有什么想法吗?我需要它来运行每10秒ping一次的循环,但我得到的只是错误:Meteor.userId只能在方法调用中调用。在发布函数中使用this.userId。 我的代码: Meteor.startup(function() { console.log(Meteor.userId()); }); 错误消息中清楚地提到了答案。顺便说一下,在打印之前,您需要检查是否已登录 Meteor.startup(function() {
用户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()
insideDeps.autorun
结果出现另一个错误:错误:Meteor代码必须始终在光纤中运行
您是否在服务器上执行此操作?。除非客户机向服务器发出请求(即发布函数、方法或某种调用),否则无法在任何地方获取用户Id。因为在没有与客户端进行某种形式的通信的情况下,无法区分哪个用户登录,因此在启动中不可能这样做&Deps.autorun仅在客户端上运行。我是个哑巴。这颗流星让我有点发散了。哈哈,我不会那么说的。最好使用来自客户端的Meteor.call,而不是像上面那样在Deps.autorun中运行,这样一旦他们登录,服务器端就会发生一些事情