LoginSignup
0
1

Parse Serverの使い方(クラウドコードの使い方)

Posted at

ニフクラ mobile backendは3月末で終了します

ニフクラ mobile backendからの移行先として、お勧めしているのがParse Serverです。設計思想が近く、変更するコード量が少なく済むのではないかと思います。

NCMBではスクリプト機能と呼んでいたFaaS(Function as a Service)ですが、Parse ServerではCloud Codeと呼ばれています。JavaScriptで書かれた関数をサーバー側で実行できます。

今回はParse ServerのCloud Codeの使い方を解説します。

起動時の設定

Parse Serverはデフォルトでは ./cloud/main.js にCloud Codeを配置します。このファイルを作成し、関数を書いていきます。これを変える場合には、起動時のオプションで指定してください。

環境変数の場合は PARSE_SERVER_CLOUD にて指定します。コードの場合は以下のように cloud キーで指定します。

const express = require('express');
const { ParseServer } = require('parse-server');

// Parse Serverの起動オプション
const config = {
	// 省略
};
const app = express();
const api = new ParseServer({...config, {
	cloud: './path/to/cloud.js' // cloudキーで指定
});
api.start()
  .then(() => {
    app.use('/parse', api.app);
  });

const port = 1337;
app.listen(port, function() {
  console.log('parse-server-example running on port ' + port + '.');
});

関数の作成

コードの基本の形です。 Parse.Cloud.define を使い、1つ目の引数が関数名になります。最終的に文字列や数字を返せば、それがレスポンスとなります。

Parse.Cloud.define("averageStars", async (request) => {
  const query = new Parse.Query("Review");
  query.equalTo("movie", request.params.movie);
  const results = await query.find();
  let sum = 0;
  for (let i = 0; i < results.length; ++i) {
    sum += results[i].get("stars");
  }
  return sum / results.length;
});

関数の呼び出し

関数の呼び出しは、各SDKを利用するのが簡単です。

Javaの場合

HashMap<String, Object> params = new HashMap<String, Object>();
params.put("movie", "The Matrix");
ParseCloud.callFunctionInBackground("averageStars", params, new FunctionCallback<Float>() {
   void done(Float ratings, ParseException e) {
       if (e == null) {
          // ratings is 4.5
       }
   }
});

Swiftの場合

PFCloud.callFunction(inBackground: "averageRatings", withParameters: ["movie":"The Matrix"]) {
	(response, error) in
	let ratings = response as? Float
	// ratings is 4.5
}

Unityの場合

IDictionary<string, object> params = new Dictionary<string, object>
{
    { "movie", "The Matrix" }
};
ParseCloud.CallFunctionAsync<IDictionary<string, object>>("averageStars", params).ContinueWith(t => {
  var ratings = t.Result;
  // ratings is 4.5
});

JavaScriptの場合

const params =  { movie: "The Matrix" };
const ratings = await Parse.Cloud.run("averageStars", params);

NCMBとの相違点

NCMBのスクリプトとParseのCloud Codeは、基本的な使い方は似ています。似ているのは以下の点です。

  • HTTP呼び出し
  • Node.jsが利用できる

違う点は以下になります。

  • ParseにはRubyが利用できません
  • ParseはHTTPメソッドを指定する必要がありません
  • ParseのCloud RunではSDKが利用しているアプリで初期化済みです

まとめ

Parse ServerのCloud RunはNode.jsを手軽に実行するのに便利です。もちろんTypeScriptで書いてmain.jsにトランスパイルすることもできます。ただし、ParseのJavaScript SDKは型情報がないので、自作する必要があります。

データの管理方法などはParse ServerとNCMBで似ています。他のmBaaSと比べると、全体の修正量はそこまで多くないと思われます。載せ替え先として検討に挙げてください。

Cloud Code Guide | Parse

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1