Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 如何在服务器钩子中获取Iron路由器查询参数_Meteor_Iron Router - Fatal编程技术网

Meteor 如何在服务器钩子中获取Iron路由器查询参数

Meteor 如何在服务器钩子中获取Iron路由器查询参数,meteor,iron-router,Meteor,Iron Router,我正在尝试添加一个推荐系统到我的项目中,所以目前我的基础是。我遇到的问题是我的项目只使用密码,而不是帐户密码。这个包的工作方式是通过一个。我相信这只适用于帐户密码在使用API(如)创建帐户时不起作用 我的想法是使用Meteor.users.before.insert钩子获取iron router查询参数,并将它们插入Meteor.users中我的refererCode字段,因为我已经在使用其他一些东西了 问题是我一直无法找到在服务器上获取查询参数的方法,我希望这样做: Meteor.users.

我正在尝试添加一个推荐系统到我的项目中,所以目前我的基础是。我遇到的问题是我的项目只使用密码,而不是帐户密码。这个包的工作方式是通过一个。我相信这只适用于帐户密码在使用API(如)创建帐户时不起作用

我的想法是使用
Meteor.users.before.insert
钩子获取iron router查询参数,并将它们插入Meteor.users中我的
refererCode
字段,因为我已经在使用其他一些东西了

问题是我一直无法找到在服务器上获取查询参数的方法,我希望这样做:

Meteor.users.before.insert(function(userId, doc) {
  doc.referrerCode = Referrer._referrerCode; // Link 1 
});
()

但这将被认为是未定义的

如果我在我的注册页面上,它有一个类似这样的查询,例如:
example.com/register?r=12345
,那么我在它返回的客户机上运行
Router.current().params.query.r
。基本上,我只需要在新用户创建帐户时将其保存到Meteor.users中的referralCode字段,如果注册URL中存在引用代码

我有点迷路了。我曾考虑将其设置为会话变量,然后在before.insert钩子中获取该变量,但这同样只适用于客户端。我认为流星法可能是最好的方法,但我不确定我将如何构造它。非常感谢您的帮助

  • 将转诊令牌放入
    profile
  • 把它用在你的钩子上
  • 下面我复制了一些我以前使用过的代码。它围绕着一个
    邀请
    集合构建,该集合跟踪谁邀请了谁:

    客户:

    var profile = {};
    ... any other profile settings you've captured
    if ( token ) profile.referralToken = token;
    Accounts.createUser({ email: email, password: password, profile: profile }, function(err){ ...})
    
    钩子:

    if ( options.profile.referralToken ){ // referral case
      var invitation = Invitations.findOne({ token: options.profile.referralToken });
      if ( invitation )
        user.invitationId = invitation._id; // the invitation used
        user.invitedBy = invitation.userId; // the referring user
      }
      delete options.profile.referralToken;
    }
    return user;