2016-04-14 5 views
0

Я пытаюсь добавить реферальную систему к моему проекту, поэтому в настоящее время я основываю ее на this package. Проблема, с которой я сталкиваюсь, - это мой проект, который использует только accounts-google, а не учетную запись. Способ работы этого пакета заключается в добавлении железного маршрутизатора query parameters для referrerCode (/register?r=ReferralCodeHere) через preSignUpHook. Я считаю, что это работает только с учетными записями - пароль не работает при создании учетной записи с API, например accounts-google.Как получить параметры запроса Iron-router на крюке сервера

Моя идея вокруг этого использовать Meteor.users.before.insert крюк, чтобы захватить параметры запроса железа маршрутизатора и вставить их в свой referrerCode поле в Meteor.users, поскольку я уже использую Meteor Collection Hooks на пару других вещей.

Этот вопрос я гавань была в состоянии найти способ получить параметры запроса на сервере, я надеялся, что сделать что-то вроде этого:

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

(Link 1)

Но это будет просто придумать как неопределенный.

Если я нахожусь на моей странице регистрации, и у него есть запрос вроде этого, например: example.com/register?r=12345 Затем я запускаю Router.current().params.query.r на клиенте, он возвращает 12345. В основном мне просто нужно сохранить это в поле referralCode в Meteor.users, когда новый пользователь создает учетную запись, если в URL-адресе реестра существует реферальный код.

Я немного потерялся с этим. Я подумал о том, чтобы установить его как переменную сеанса, а затем получить это в hook.inert, но это снова работает только на стороне клиента. Я думаю, что метод метеор мог бы быть лучшим для этого, но я не совсем уверен, как бы я его структурировал. Любая помощь очень ценится!

ответ

0
  1. Поместите маркер направления в profile
  2. использования, что в вашем крючке

Ниже я скопированный код, который я использовал раньше. Он построен вокруг 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){ ...}) 

крюк:

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;