概要
Parse.comの説明は省きます 
REST-APIのGET系のAPIでクエリを指定していろいろな検索をすることができるのですが、その中に$selectというクエリがあります 
$selectは副問い合わせを実行するためのクエリです 
実際に試せばある程度動きはわかるのですが、そもそも動かし方もわかりづらいのでメモがてら説明しようと思います
環境
- Mac OS X 10.8.5
 - Parse.com ( 2014/09/17 時点 )
 - curl
 
説明
UIでデータを投入しつつcurlでクエリを実行して動きを確認します
UIで事前にデータを投入
まず、サンプルのデータを投入します 
Parse.comのダッシュボードにログインし会員の一覧を開いて以下のユーザを登録します 
UIが新しくなってCoreというサービス配下にユーザ一覧はあります 
ユーザを登録する際は、はじめにusernameをダブルクリックしてユーザ名を入力してEnter、その後にpasswordをダブルクリックしてパスワードを入力してEnter、すると登録することができます 
登録が完了するとobjectIdが自動で入力されます
次にGameScoreというクラスを作成して以下のデータを登録してください 
ユーザ登録時と同様にCoreからクラスを追加します 
クラスの追加は、もう少し下に「+Add Class」というボタンがあるのでそこからGameScoreクラスを追加します 
また、クラスを追加したらscoreというフィールドも追加します 
フィールドの追加は図にもある「+Col」から追加します 
クラスの作成とフィールドの追加ができたらplayerName, scoreとデータを入力して登録します 
こちらも登録が完了するとobjectIdが自動で入力されます
curlでクエリを作成する
いきなりですが、以下がサンプルクエリです
curl 
  -X GET
  -H "X-Parse-Application-Id: 1234567890abcdefghijklmnopqrstuvwxyz"
  -H "X-Parse-REST-API-Key: 1234567890abcdefghijklmnopqrstuvwxyz"
  -d 'where={"username":{"$select":{"query":{"className":"GameScore","where":{"score":{"$gt":50}}},"key":"playerName"}}}'
  'https://api.parse.com/1/users'
X-Parse-Application-IdとX-Parse-REST-API-Keyは自分のアプリのキー情報に置き換えてください 
注目するべきはwhere=の部分でこれが$selectを使った検索クエリになります 
次でクエリの動作を詳しく説明します
動作の仕組み
流れとして3段階で
- GameScoreクラスのscoreというフィールドに対して、scoreが50以上のデータを検索 
{"className":"GameScore","where":{"score":{"$gt":50}}}の部分 - その結果からplayerNameフィールドの一覧を取得 
"key":"playerName"の部分 - 取得したplayerNameフィールドの一覧と同じusernameを持つユーザをusersクラスから取得する 
where={"username":{"$select":{"query":...の部分 
となります 
クエリを分解して考えるとちょっとわかりやすいかもしれません
今回のサンプルでの結果は以下の通りとなります
{
    "results": [
        {
            "createdAt": "2014-09-17T01:25:38.180Z", 
            "objectId": "2XQRFoaRg9", 
            "updatedAt": "2014-09-17T01:35:29.539Z", 
            "username": "Sean Plott"
        }
    ]
}
Sean Plottさんのみ取得されます 
「Aliceさんも50点以上なのに含まれていないのはなぜ?」 
という疑問に対してはAliceさんはusersクラスに存在しないからです
$selectクエリだけでしたが、すごい大げさに説明してみました 
少しは理解していただけましたでしょうか 
すごいニッチな情報ですがParse.comを使う方は参考にしてみてください
0 件のコメント:
コメントを投稿