概要
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 件のコメント:
コメントを投稿