如何在服务器挂钩

时间:2016-04-14 23:19:39

标签: meteor iron-router

我正在尝试为我的项目添加推荐系统,所以目前我的基础是this package。我遇到的问题是我的项目只使用accounts-google而不是帐户密码。此程序包的工作方式是通过query parameters为referrerCode(/register?r=ReferralCodeHere)添加铁路由器preSignUpHook。我相信这只适用于帐户密码在创建使用accounts-google等API的帐户时无效。

我的想法是使用Meteor.users.before.insert挂钩来获取铁路由器查询参数并将它们插入到Meteor.users中的referrerCode字段中,因为我已经使用{{3其他一些事情。

问题是我找不到在服务器上获取查询参数的方法,我希望能做到这样的事情:

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

Meteor Collection Hooks

但这只是未定义的。

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

我对这个有点失落。我考虑将其设置为Session变量,然后在before.insert钩子中获取它,但这只能在客户端工作。我认为流星法可能是最好的,但我不确定如何构建它。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

  1. 将推介令牌放入Ad is not visible. Not refreshing ad Scheduling ad refresh 60000 milliseconds from now
  2. 在你的钩子中使用它
  3. 下面我复制了一些我之前使用过的代码。它围绕一个profile集合构建,该集合跟踪谁邀请了谁:

    客户端:

    Invitations

    钩:

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