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