创建新用户时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函数在用户登录之后自动呈现欢迎页面,而无需重定向。