创建新用户时Meteor服务器端重定向
我想在创建新用户帐户时重定向创建新用户时Meteor服务器端重定向,meteor,Meteor,我想在创建新用户帐户时重定向 Accounts.onCreateUser(function(options, user) { // what to do? }) 我使用的是iron:router,但是router.go()不起作用,因为它只用于客户端。据说Iron Router支持服务器端重定向,但在这种情况下,我不确定如何应用它。您可以在客户端代码中使用自己的方法来调用将调用Accounts.createUser的服务器方法。如果方法成功,则可以执行重定向。e、 g //cli
Accounts.onCreateUser(function(options, user) {
// what to do?
})
我使用的是
iron:router
,但是router.go()
不起作用,因为它只用于客户端。据说Iron Router支持服务器端重定向,但在这种情况下,我不确定如何应用它。您可以在客户端代码中使用自己的方法来调用将调用Accounts.createUser的服务器方法。如果方法成功,则可以执行重定向。e、 g
//client method
Meteor.call('createUser', userObj, function(err,data) {
if (err) {
//account creation failed
} else {
//success, redirect
Router.go('routeName');
}
});
//server code
Meteor.methods({
createUser: function(user) {
//account creation
Accounts.createUser(user);
}
});
Router.route('/login',function(){Accounts.onCreateUser(function(options,user){this.render('whateheverRoute')返回user;})})
尝试将该函数放入路由器。route
如果/login
不存在,因为它是从导航栏中包含的模式发生的,该怎么办?但是您应该将该导航栏放在某个模板中,所以只需将this.render放在那里,这里的关键是,您可以使用this.render的上下文,在任何挂钩、函数中进行渲染。对不起,您可以详细说明一下吗?我使用的是引导模式,因此路由器文件中没有任何关于Nav
模板的内容。这就是为什么我不知道应该把帐户放在哪里。onCreateUser
特别是因为它是一个服务器端的代码。我必须使用loginWithGoogle
功能。不过,你的问题与创建帐户无关吗?我可以得到一些关于你打算如何工作的更多信息吗?当然可以:)当用户第一次访问网站时,他会单击“使用谷歌登录”,onCreateUserAccount将从服务器端调用,他应该被重定向到欢迎页面。如果他是一个返回用户,onCreateUserAccount
事件将不会被调用,他也不应该被重定向。啊,我明白了。在这种情况下,您是否在路线上使用了onBeforeAction钩子?它应该根据用户是否登录,反应性地显示“欢迎”或“使用Google登录”部分。我假设如果loginWithGoogle函数在用户登录之后自动呈现欢迎页面,而无需重定向。