ひとりまとめ

もろもろのメモ

ParseのCloud Codeでsaveとかしたい!

簡単お手軽にアプリのサーバサイドを担当してくれるParse.com。単に保存するだけならアプリから適当にデータを投げるだけなのですが、「いいね!の数をカウントアップする」みたいな、クライアント側でがんばるよりもサーバでうまいことやってもらった方が良い処理もあったりします。

そんなことを可能にするのがCloudCodeらしい・・・。

 

ということで、自分なりに調べてみた結果をメモ。

参考にしたのは、こちらの公式ページです。

Cloud Code Guide | Parse

 

toolのインストール

大好きなGUIはなく、基本的にコマンドラインでカタカタやるしかないようです。

まずはターミナルを起動して次のコマンドを使ってtool一式をインストール。

Macの場合

curl -s https://www.parse.com/downloads/cloud_code/installer.sh | sudo /bin/bash

このときPasswordを聞かれますが、これはマシンにインストールしようとしてるので管理者のパスワードですね。 Installing....とか出たあと終わります。

 

セットアップ

引き続き、次のように打ち込む。「MyCloudCode」というのはParse.comで設定しているAppに対応したCloudCodeの作業をするディレクトリの名前として使われます。なので、もしAppを登録していなければ先にParse.comのサイトで作っておいた方が良いです。

$ parse new MyCloudCode

ユーザーのディレクトリの中に、このMyCloudCodeというディレクトリが作られます。(中に3つのディレクトリ&3つのファイルも)

ディレクトリなどを作り終わったら、EmailとPasswordを聞かれます。これはParse.comのを入れます。ログインできたら、自分が登録しているアプリの一覧が表示されます。今回のCloudCodeに紐づけたいアプリを選択すると終了です。

ごっそり作られたディレクトリとファイルですが、configは触らなくてOK。publicは静的コンテンツをアップする場所らしく、実際にコードを書くのはcloud以下にあるmain.jsだそうです。なお、文字コードUTF-8がよさげ。

 

実行タイミングについて

いくつかイベントが設定されてるぽい。どのタイミングで実行させるかによって、書き方が異なります。それぞれの名前は、アプリから叩くときの名前として使われます。

そのコードを叩かれた時に実行

いわゆる普通のやつ。

Parse.Cloud.define(“名前”, function(request, response){

}

 

Parseのデータが変更された時に実行

アプリからParseのデータを操作すると、それを感知して実行されるらしい。

セーブ前に呼び出される

Parse.Cloud.beforeSave(“名前”, function(request, response){

}

 

セーブ後に呼び出される

Parse.Cloud.afterSave(“名前”, function(request){

}

 

削除前に呼び出される

Parse.Cloud.beforeDelete(“名前”, function(request, response){

}

 

削除後に呼び出される

Parse.Cloud.afterDelete(“名前”, function(request){

}

 

バックグラウンドで実行

時間がかかる処理など。

Parse.Cloud.job("名前", function(request, status){

}

 

書き方

結局はParseをJavaScriptで読み書きするのでここの文法に沿って書けば良いのだけど、自分がよく使う内容だけ抜粋。memberというClass(いわゆるテーブル)にname、ageというCol(いわゆるフィールド)がある体。

Classesの指定

var query = new Parse.Query("member");

 

リクエストについた引数の取得

アプリから投げるときにnameという名前でTaroとか送ってきたというイメージ。変数にはTaroがはいります。

var targetName = request.params.name;

 

クエリーに抽出条件を設定

たとえばこんな感じで。

query.equalTo("name",targetName);

query.greaterThan("age",18);

 

 

抽出

成功失敗それぞれの処理を書いておく。抽出できたとき、結果はfunctionの( )の中に書いた変数へ納められる。複数あるときはそれが配列になっていて、result[i]とかで取り出せる。

query.find(

   success: function(results){

      // 成功時の処理 resultsに結果が入っている

   },

   error: function(error){

      // 失敗時の処理 error.codeでエラーコードが拾える

   }

);

 

値の取得、書き換え

上の例のresultsが配列で、それの1つめを操作する場合。

取り出す

var tmpName = results[0].get("name");

書き換える

results[0].set("name","Jiro");

インクリメント

results[0].increment("age");

 

値の保存

これも成功と失敗の処理を用意しておく。

results[0].save({

   success: function(){

      // 成功時の処理

   },

   error: function(error){

      // 失敗時の処理

   }

});

 

 

レスポンスを返す

ここでは文字列を固定で返してますが、もちろん計算結果や抽出結果など返してOK。

成功時

response.success("成功!");

失敗時

response.error("失敗・・・");

 

スクリプトのアップロード

これまたコマンドです。

$ parse deploy

 

実行

とりあえずターミナルから確認するにはこんな感じ。URLは「実行するタイミング」のところで書いた名前を記述。

curl -X POST \

-H "X-Parse-Application-Id: {Application ID}" \

-H "X-Parse-REST-API-Key: {REST API Key}" \

-H "Content-Type: application/json" \

-d '{}' \

https://api.parse.com/1/functions/hello

{ }の中身はそれぞれみんな違っていて、簡単に参照するには

Cloud Code Guide | Parse

にアクセスして、値を参照するのが手っ取り早げ。

 

「ParseをJavaScriptで操作するようにかけばいいんだった!」と気がつくのに、少々時間がかかりました・・・。

 

iOSアプリ テスト自動化入門

iOSアプリ テスト自動化入門

 

 次はテストに挑戦したい。