【问题标题】:Route.go() on account creation doesn't work (METEOR)创建帐户时的 Route.go() 不起作用(METEOR)
【发布时间】:2014-08-23 03:00:08
【问题描述】:

我的 web 应用上有一个钩子,可以在用户首次登录/注册时将用户重定向到编辑个人资料页面。

看起来有点像这样:

Accounts.onCreateUser(选项,用户)-> if options.profile

options.profile.aboutMe = null
options.profile.email = null
options.instrumentsPlayed = null
options.instrumentsPlayedTemporary = null

Router.go('edit_form')

用户

所以它在个人资料页面中添加了一些字段,并且据说 Router.go 行应该将用户重定向到 edit_form 页面。我已经尝试了没有 Router.go 行的代码,它可以正常工作。我在服务器文件中运行它。当我尝试在存在 Router.go 行的情况下登录/注册时,它给了我一个“内部服务器错误”并且没有登录。当我没有运行它时,它可以正常运行一切,但显然不会重定向。问题出在哪里?

【问题讨论】:

    标签: javascript coffeescript meteor iron-router


    【解决方案1】:

    在客户端尝试这样的事情:

    Template.signup.events "submit #signup": (e, t) ->
     Meteor.call "registerUser", email, password, profile, (err, result) ->
       if err
         throwError err.reason
         console.log err
       else
         Router.go "/edit_form"
    

    Accounts.onCreateUser (options, user) 仅适用于服务器,但您需要重定向客户端。 registerUser 这是我的 Meteor 方法,我称之为 Accounts.onCreateUser (options, user)

    【讨论】:

    • 我用的是accounts-facebook登录包,所以登录和注册的按钮是一样的。我只希望它在将新用户添加到数据库后重定向......我可以做这样的事情吗?在服务器端设置一个会话变量,当创建一个新帐户时,更改它的值。每次更改值时(意味着有人第一次登录),将用户重定向到编辑配置文件页面(会话变量在服务器和客户端都可以调用,对吗?)
    • 不,会话只存在于客户端。您可以在配置文件中添加一些选项,当您创建用户时,例如profile.firstLogin = true; 在回调函数中的函数Meteor.loginWithFacebook 中,如果结果没有错误,则重定向到路径/edit_form。当用户完成编辑时,您必须更改此选项profile.firstLogin
    【解决方案2】:

    首先,您要在客户端而不是服务器上运行重定向。

    可以在注册方法上使用回调,这样当用户创建帐户时,她将被重定向。但很可能您从不希望登录用户访问注册或登录页面。要处理这个问题,您可以使用 Meteors 反应性。在注册页面上,如果用户已登录,您可以使用挂钩来重定向用户。

    this.route('register', {
      onBeforeAction: function() {
        if (Meteor.userId())
          this.redirect('myRouteForLoggedInUsers')
      }
    });
    

    现在,当用户注册时,她在register 路由上但她没有登录,所以她不会被重定向。一旦注册过程完成,她仍将在register 路线上,但她将登录。由于 Meteors 的反应性,onBeforeAction 函数将重新运行(因为Meteor.userId() 的结果已更改),因此她将被重定向。

    您也可以在登录页面上使用它,这样任何登录的人都将被重定向,而不是看到登录页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 2016-05-13
      • 2015-04-22
      • 1970-01-01
      相关资源
      最近更新 更多