3.2 gaedirectを使用したエンティティ参照
(1)参照画面例
次に参照ですが、これも一般的な参照処理とまったく同じで、キーを指定して「参照」ボタンをクリックすると、指定されたキーに対応するエンティティの内容が表示されます。
(2)参照用プログラム例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>コース参照処理</title>
<script type="text/javascript" src="/jslib/gaedirect.js"></script>
<script type="text/javascript" src="/jslib/jquery-1.6.1.min.js"></script>
<script type="text/javascript">
$(function(){
prop = "name,tel,menu,bill";
$("#rev").click(function(){
var key = $("#key").val();
$.get(gae(),rev("cook",key,prop),function(res){dsp(res, prop);});
});
});
</script>
</head>
<body bgcolor="#cadbdb">
<span style="color:#aa0022;font-weight:bold" >コース参照処理
<input type="button" id="rev" value=" 参照 "/></span><br/>
結果:<nobr id="stat"></nobr><hr/>
キー:<input type="text" id="key" size="12"/><br/>
名前:<input type="text" id="name"/><br/>
TEL:<input type="text" id="tel"/><br/>
分類:
<span id="menu">
<input type="checkbox" name="class" value="1">和食
<input type="checkbox" name="class" value="2">洋食
<input type="checkbox" name="class" value="3">中華
</span><br/>
料金:<input type="text" id="bill"/><br/>
</body>
</html>
参照処理の書式は登録の場合と同様に大変シンプルです。
参照はjQueryの$.getで行い、第二引数の関数名は「rev」ですが、レスポンスとしてサーバから受け取ったデータの表示処理は(2)のdsp関数だけで行っています。
dsp関数では第1引数にレスポンスデータ、第2引数にプロパティ値(ID値)並び文字列を指定しています。この指定によって、登録の場合と同様に表示フィールドのタグやUIコントロールの種類などをgaedirectがチェックして、そのタグに合った形で自動的に表示するようになっています。gaedirectでは参照実行で何らかのエラーが発生した場合は、レスポンス文字列最初の3文字で"NO:"が返されます。(1)がその判定を行っており、エラーがない場合は次の行からの表示処理に移り、エラー発生の場合は(3)からエラーメッセージを表示します。
参照で指定するプロパティ文字列(prop)では、登録や更新の場合と異なり、データ型の指定を含みません。ただしgaedirectのv1.1では登録・参照・更新処理すべて共通してデータ型を含むプロパティ文字列を使用するように変更されています。
$.get(gae(), rev(kind名, キー値, プロパティ名の並び), function(戻り値){表示処理});
第一引数: gae()
第二引数: rev
第1引数: kind名(例 " dtype")
第2引数: キー名
第3引数: カンマ区切り参照プロパティ並び
3.3 gaedirectwp使用したエンティティ更新
(1)更新画面例
更新処理では前の参照処理を使用して、更新対象のエンティティ項目を表示した後(図3-7)、更新するプロパティ項目の内容を変更後、「更新」ボタンをクリックすることによって行われます。
更新処理によって、図3-8のリストプロパティ(billとmenu)がスカラー型に変換されています。
(2)更新用プログラム例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>コース参照・更新処理</title>
<script type="text/javascript" src="/jslib/gaedirect.js"></script>
<script type="text/javascript" src="/jslib/jquery-1.6.1.min.js"></script>
<script type="text/javascript">
$(function(){
var key;
var prop1 = "name,tel,menu,bill"; //(1)
var prop2 = "name,tel,menu,in:bill"; //(2)
$("#rev").click(function(){
key = $("#key").val();
$.get(gae(), rev("cook",key,prop1),function(res){dsp(res, prop1);
});});
$("#upd").click(function(){
$.post(gae(),upd("cook",key,prop2),function(res){$("#stat").html(res);
});});
});
</script>
</head>
<body bgcolor="#cadbdb">
<span style="color:#aa0022;font-weight:bold" >コース参照・更新
<input type="button" id="rev" value=" 参照 "/></span>
<input type="button" id="upd" value=" 更新 "/></span><br/>
結果:<nobr id="stat"></nobr><hr/>
キー:<input type="text" id="key" size="12"/><br/>
名前:<input type="text" id="name"/><br/>
TEL:<input type="text" id="tel"/><br/>
分類:
<span id="menu">
<input type="checkbox" name="class" value="1">和食
<input type="checkbox" name="class" value="2">洋食
<input type="checkbox" name="class" value="3">中華
</span><br/>
料金:<input type="text" id="bill"/><br/>
</body>
</html>
更新処理は参照の後に行われますが、プログラムはリスト3-6の部分だけで更新処理は完了します。更新処理は基本的には登録での第二引数の「add」が「upd」になるだけであとは同じです。しかしRDBでの更新処理とは異なる特徴があり、既存のプロパティ項目の値を変えるだけでなく、登録の場合と同様に、プロパティ項目のデータ型を変更したり、追加や削除をしたりすることもできます。
更新処理では、(1)のデータ型を含むプロパティ並びと(2)のデータ型を含まないプロパティ並びの両方が使用されますが、v1.1ではデータ型を含むプロパティ並びだけで処理できるようになります。
$.post(gae(), upd(kind名,キー値, プロパティ名の並び),function(戻り値){ ステータス表示 }
第一引数: gae() //固定
第二引数: upd //固定
第1引数: エンティティ名(任意指定 例"gaekvs")
第2引数: キー名(任意指定)
第3引数: カンマ区切り更新プロパティ並び
3.4 gaedirectを使用したエンティティ削除
(1)削除画面例
サンプルの削除処理は、更新処理と同様に削除対象のエンティティをキー指定で参照し(図3-9)、「削除」ボタンのクリックによって行います。
(2)削除用プログラム例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>コース削除処理</title>
<script type="text/javascript" src="/jslib/gaedirect.js"></script>
<script type="text/javascript" src="/jslib/jquery-1.6.1.min.js"></script>
<script type="text/javascript">
$(function(){
var key;
var prop = "name,tel,menu,bill";
$("#rev").click(function(){
key = $("#key").val();
$.get(gae(), rev("cook",key,prop),function(res){dsp(res, prop);
});});
$("#del").click(function(){
$.post(gae(),del("cook",key),function(res){$("#stat").html(res);
});});
});
</script>
</head>
<body bgcolor="#cadbdb">
<span style="color:#aa0022;font-weight:bold" >コース参照・削除
<input type="button" id="rev" value=" 参照 "/></span>
<input type="button" id="del" value=" 削除 "/></span><br/>
結果:<nobr id="stat"></nobr><hr/>
キー:<input type="text" id="key" size="12"/><br/>
名前:<input type="text" id="name"/><br/>
TEL:<input type="text" id="tel"/><br/>
分類:
<span id="menu">
<input type="checkbox" name="class" value="1">和食
<input type="checkbox" name="class" value="2">洋食
<input type="checkbox" name="class" value="3">中華
</span><br/>
料金:<input type="text" id="bill"/><br/>
</body>
</html>
削除処理もサンプルでは参照の後に行われていますが、キー指定から直接行うこともできます。リスト3-7の(1)で削除処理が行われていますが、削除の場合はkind名とキー値を指定するだけになります。
$.post(gae(), del(kind名,キー値),function(戻り値){ ステータス表示 }
第一引数: gae() //固定
第二引数: del //固定
第1引数: エンティティ名(任意指定)
第2引数: キー名(任意指定)


