无论用户是否已登录,当我在Meteor.user()
中呼叫Meteor.startup()
时,用户始终为undefined
(未记录)。
我想执行操作(将用户重定向到必须进行登录的外部网址),如果页面加载时不已登录。问题是,如果他登录,页面将只在某个时间点知道它(当然是以毫秒为单位)。我可以使用Tracker.autorun
捕获最终登录用户,但我想执行现在的操作(当用户始终未登录时),我知道只有之后我是否需要执行它(可能用户已经登录)。
如何在Meteor中执行此操作?
修改
我最终完成了以下工作:
Tracker.autorun(() => {
if (!Meteor.user() && !Meteor.loggingIn() && Accounts.loginServicesConfigured()) {
Meteor.loginWithTwitter();
}
});
答案 0 :(得分:2)
尝试body {
margin:0;
}
header {
background-color: black;
color: white;
text-align: center;
width: 100%;
height: 20%;
margin: 0px;
}
menu {
background-color: gray;
color: white;
height: 60%;
width: 10%;
float: left;
margin: 0px;
-webkit-padding-start: 0px;
}
content {
background-color: blue;
float: left;
color: white;
width: 90%;
height: 60%;
margin: 0px;
}
footer {
clear: both;
background-color: black;
color: white;
width: 100%;
height: 20%;
margin: 0px;
}
来自文档
Meteor.loggingIn()
答案 1 :(得分:1)
问题的一个解决方案是使用the meteorhacks:fast-render
package。它的包含会导致初始数据集与应用程序代码一起发送,因此用户信息可以立即在startup
方法中使用。
如果您不想使用该软件包,您可以随时重新构建应用程序,以便在加载初始数据后始终发生您所说的“现在”。例如,您可以将此检查移至根控制器的onBeforeAction
回调。这将始终在呈现任何模板之前运行,假设您还在根控制器中订阅了用户数据。