▶ 技術めも
Parse Cloud Code 使ってみた
非常に参考になったサイト
【Parse】データの検索方法(サブクエリ)
http://sakapro.com/category/javascript/page/2/
Parse.comを使ったサーバサイド実装不要のフロントエンド開発
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);
});
$ 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 処理が実行される。
なんで?(´・ω・`)?
こういうのは動きを統一して欲しい!( 。◕ˇωˇ◕。)