2017-08-13 9 views
-5

私はUdemyでNode.jsコースを受講しており、シンプルなWebアプリケーションを作成するために得た知識の一部を適用したいと考えています。ユーザー登録をして管理パネルに導いていますが、この部分は既に持っています。Webアプリケーションに最適なアプローチ/デザインですか?

このユーザー(リクエスタ)は、ユニークなリンクを使用してユーザー(招待者)をこのWebサイトに参照できます。たとえば、彼は一意のハイパーリンクを生成するためにボタンをクリックします(このリンクの私のアイデアはリンクを送信しているリクエスタのhttp://websiteurl/useridでした)。

リクエスト者は、このリンクを電子メールで友達に送信して、ウェブサイトに招待することができます。登録フォームへのリンクをクリックすると、リンクされたフォームに記入すると元のユーザーの下の配列)。

招待者が記入したフォームが元の依頼者にリンクされていることを確認するために、この「セッション」を設定するにはどうすればよいですか?これらのフォームはリクエスタのハイパーリンク上でどのように動的に生成できますか?

URLの私のアイデアが良いアプローチである場合、または私が考慮すべき他のアプローチがある場合は、これを行うための正確なコードを探していません。

ありがとうございます!

+0

これまでに書いたコードを投稿できますか? – styfle

+0

データベースを使用して照会URLを特定のユーザーアカウントに関連付けることはできませんか?その後、リンクが何回訪問されたかを記録し、そのユーザーに関連付けられたカウンタを増分することができます。 –

+0

@ObsidianAge元のリクエスタのURLを保存できますが、特定のリクエスタのURLのサインアップフォームをどのようにして動的に生成できますか?それが私ができることですか?各リクエスターの固有のURLごとにそのフォームを生成する方法がわからないので、私はこの部分の周りを頭で覆すことはできません。私はURLを持っていますが、ボタンのクリックからフォーム/ Webページを生成する方法はわかりません。 – user2573690

答えて

0

これは、データベースのスキーマを変更する必要があります。

{ 
    referred: [] 
} 

呼ば配列は、IDやユーザーの言及ユーザーへの参照のいくつかの並べ替えが含まれている必要があります。ユーザーは、のような性質を持っている必要があります。

"/:userid"ルートでは、フォームは新しいユーザーが作成されたルートに送信され、ユーザーIDを持つパラメータが必要です。この場合、私はクエリパラメータを使用しています。

人が/fooにアクセスすると、/new?userid=fooのようなURLに投稿するフォームが表示されます。

app.post("/new", (req, res) => { 
    const userID = req.query.userid; 
    const newUser = // create user normally 

    if(userID) { 
    // `userID` referred this user 
    const referrer = getUser(userID); 
    referrer.referred.push(newUser); 
    save(referrer); 
    } 
}); 

getUser関数は、現在のユーザーを返す必要があり、あなたが新しいユーザーとreferredプロパティを変更する必要があります。そのルートで

は、あなたが(Expressを仮定して)このような何かを行うことができます。このコードは概要にすぎず、データベース内のユーザーを更新する必要があります。

一言で言えば、フォームは/new?userid=fooに投稿する必要があります。新しいユーザーを作成するときは、このパラメータが存在する場合は、パラメータのユーザーIDのデータベースエントリを新しいユーザーのIDで更新できます。

関連する問題