gaedirectを使ってGoogle App Engineのデータストアにアクセスする際のノウハウ。
- 参照結果とその形式
- サンプル
文字列として返される。各エンティティ(行)の区切り文字は ‘<e>’、プロパティの区切りは ‘<p>’ になる。
前提:
・kind名:xTestdb
・property名:test_key,test_aaa,test_bbb,test_ccc,test_ddd
・entity:2件
・key:適宜生成
実行例:
xTestdb("305_1362983637938")<p>305_1362983637938<p>1st data<p>b1@bb.com<p>https://www.google.co.jp/<p>100<e>xTestdb("995_1362983655034")<p>995_1362983655034<p>2nd data<p>b2@bb.com<p>https://www.google.co.jp/<p>99
N件のpropertyを参照すると、先頭にkind名とキー値が付与されて、1entityあたりN+1件の結果が返される。
結果を「オブジェクトの配列」に変換するコード例
// JavaScript
this.dbRevAll = function(callback){
// property名をカンマ区切りで並べる
//var fld = 'testdb_key,testdb_aaa,testdb_bbb,testdb_ccc,testdb_ddd';
// 配列に変換
var fldArray = (this.fld).split(',');
// クエリ(検索条件)の設定
var query = qinit(tbl,this.fld);
// query['SORT'] = 'testdb_aaa:ASCENDING'; // 昇順でソート
// リクエスト発行
$.get(gae(),query,function(res){
res = res.replace(/[\n\r]/g,''); // 余分な改行文字を除去
console.log('dbRevAll:' + res);
// entityごとに配列に分割する
var entities = res.split('<e>'); //
var d = new Array(); // 結果を格納する配列
for (var i=0; i < entities.length; i++){
// 各entityのpropertyごとに配列に分割する
// props[0] : kind名+key値 (例:xTestdb("keyvalue") )
// props[1..n] : property値
var props = entities[i].split('<p>');
d[i] = new Object(); // 結果を格納するオブジェクト
for (var j=0 ; j < props.length-1; j++ ){
d[i][ fldArray[j] ] = props[j+1];
// d[0].testdb_aaa , d[1]['testdb_bbb'] のような形式でアクセスできる
}
}
callback(d); // コールバック関数の呼び出し
});