「Webフロント開発編(2)」に続き、本編ではメールに添付された登録完了(complete)機能の開発を行います。メール内にリンクされたURLが登録完了処理のURLになります。リンクをクリックして、GETでuidを取得して会員ステータスを保留(waiting)から有効(active)に変更します
登録完了処理の作成(http://localhost:8080/completeの処理)
action.jsにcompleteメソッドを追加する。GETプロパティを追加する
[action.js]
/**
* complete page
*/
exports.complete = {};
exports.complete.GET = function(req) {
//処理を記述する
};
リクエストパラメータのチェック
リクエストオブジェクトからuidの存在の有無をチェックします。ここもチェック処理自体は最小限にとめておきます。
[action.js]
var uid = req.params['uid'];
if (uid === "") {
return Response.skin(module.resolve('skins/complete.html'), {
title: 'エラー',
errorMessage: 'URLに問題があります'});
}
memberテーブルのstatusをactiveに更新
GETで渡ってきたuidにマッチするuidのレコードをmemberテーブルよりselect()メソッドでひっぱってきて、'active'という文字列をセットしてsave()メソッドで保存します。selectした結果オブジェクトを使って、save()メソッドを実行すると、データーの更新が可能になります
[model.js]
/**
* 登録完了処理
*/
complete: function(uid) {
var result = this.loadObject.query()
.equals('uid', uid).select();
result[0].status = 'active';
result[0].save();
},
登録完了HTMLテンプレート作成
messageを表示するだけのシンプルなものを用意します
[skins/email/complete.html]
<% extends ./base.html %> <% subskin content %> <div id="header"><h1><% title %></h1></div> <div id="body"> <p id="message"><% errorMessage %></p> <h3><% headMessage %></h3> </div>
Member.complete()メソッドを呼び出す
特に目新しい処理はなく、上記で作成した、Member.complete()メソッド、complete.htmlテンプレートをセットします。
[action.js]
Member.complete(uid);
return Response.skin(module.resolve('skins/complete.html'), {
title: '登録が完了しました',
headMessage: '今後、検索ワードにマッチした勉強会をメールでお知らせ致します'
});
};
メールに記述されたリンクをクリック
「Webフロント開発編(2)」で飛ばしたメールのリンクをクリックしてみると内部でaction.jsのcompleteメソッドが呼びだされ、memberテーブルの更新、登録完了ページの表示を行います。更新後の処理は以下の画像で確認できます
メールに記述されていた内容のピックアップ [登録完了URL] http://localhost:8080/complete?uid=cb18972392a103ae3903a1b70692613b [uid] cb18972392a103ae3903a1b70692613bmemberテーブルをselectしますと、statusがwaitingからactiveに 更新されているのが確認できました ↓↓↓
![]()
登録完了ページが表示され、メッセージが表示されています

以上が登録完了機能の開発になります。次編からバッチ処理の開発に入ります。
バッチ処理開発編へ
Trackback URL
http://blog.fukaoi.org/2011/06/16/server-side-javascript-webdev3?tb=y&entry_id=37
XML

memberテーブルをselectしますと、statusがwaitingからactiveに
更新されているのが確認できました
↓↓↓