技術めも

Parse Cloud Code 使ってみた

非常に参考になったサイト

【Parse】データの検索方法(サブクエリ)

http://sakapro.com/category/javascript/page/2/

Parse.comを使ったサーバサイド実装不要のフロントエンド開発

http://www.riaxdnp.jp/?p=6420

http://www.riaxdnp.jp/?p=6529

Parse - Cloud Code - Cloud Functions

http://murayama.hatenablog.com/entry/2014/01/15/223630

Class Parse.Query

https://parse.com/docs/js/symbols/Parse.Query.html

 

ブログラムファイル構造

こんな感じで API ごとにファイルを分けてみました。

  • main.js
require('cloud/hello.js');
require('cloud/averageStars.js');
  • hello.js
Parse.Cloud.define("hello", function(request, response)
{
   var text = request.params.text;
   console.log("TEXT: " + text);
   
   response.success("Hello Parse !!! : " + text);
});

自作の Parse Test Tool

$ parsetest test/hello.txt
------------------------------
https://api.parse.com/1/functions/hello
{"score":1337,"text":"Hello World","cheatMode":false}
------------------------------
{"result":"Hello Parse !!! : Hello World"}
------------------------------
1.6578760147095 sec
  • hello.txt
/functions/hello
{
    "text":"Hello World",
}

( ・`ω・´) OK!

 

コーディングで はまった ところ

Class(table) の ObjectId

オブジェクトIDをレスポンスにしよう ( ・`ω・´)

response.success(item.objectId);

あれ? nullだ。item.name とかでカラム名を指定すると取得できるのに。なぜ?

調べた結果、

response.success(item.id);

でした。

だったら、Data Browser 上でカラム名は id にして欲しい!( 。◕ˇωˇ◕。)

 

Class(table)アクセス

ユーザーが存在を確認するプログラム

   var Users = Parse.Object.extend("Users");
   var query = new Parse.Query(Users);
   query.equalTo("userId", request.params.userId);
   query.first({
     success: function(item) {
       if (item == undefined) {
           // ユーザーが存在しない場合の処理
       } else {
           // ユーザーが存在する場合の処理
       }
     },
     error: function(error) {
       // エラー処理
     }
   });

うごいた。うごいた。

なるほど、item が undefined となるのかぁ。

   var Users = Parse.Object.extend("Users");
   var query = new Parse.Query(Users);
   query.get(request.params.objectId, {
     success: function(item) {
       // ユーザーが存在する場合の処理
     },
     error: function(error) {
       // ユーザーが存在しない場合の処理
     }
   });

でも、getメソッドで objectId 指定でユーザー情報を取得する場合、ユーザーがいないと error: function 処理が実行される。

なんで?(´・ω・`)?

こういうのは動きを統一して欲しい!( 。◕ˇωˇ◕。)