我正在尝试为我的项目添加推荐系统,所以目前我的基础是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
});
但这只是未定义的。
如果我在我的注册页面上并且它有一个这样的查询,例如:example.com/register?r=12345
那么我在客户端上运行Router.current().params.query.r
它返回12345
。基本上我只需要在新用户创建帐户时,如果注册URL中存在推荐代码,就将其保存到Meteor.users中的referralCode字段。
我对这个有点失落。我考虑将其设置为Session变量,然后在before.insert钩子中获取它,但这只能在客户端工作。我认为流星法可能是最好的,但我不确定如何构建它。非常感谢任何帮助!
答案 0 :(得分:0)
Ad is not visible. Not refreshing ad
Scheduling ad refresh 60000 milliseconds from now
下面我复制了一些我之前使用过的代码。它围绕一个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){ ...})