1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Hexabase TypeScript SDKを使ってプログラム拡張(FaaS)を実行する

Posted at

Hexabase(ヘキサベース)は企業においても安心して利用できるBaaS(Backend as a Service)を提供しています。多くのBaaSがそうであるように、主にフロントエンド開発者に利用してもらいたいと考えています。そこで現在、TypeScript SDKの開発が進められています。

この記事ではHexabase TypeScript SDKのインストールと、プロジェクトに対して設定したプログラム拡張を呼び出す方法について紹介します。

インストール

インストールはnpmやyarnを使って行います。

# npmの場合
npm install @hexabase/hexabase-js

# yarnの場合
yarn add @hexabase/hexabase-js

インポート

インポートすると、 HexabaseClient というオブジェクトが取得できます。

import { HexabaseClient } from "@hexabase/hexabase-js";

初期化

HexabaseClientを初期化します。

const client = new HexabaseClient();

認証

Hexabaseでは業務利用を想定しているため、利用する際に認証情報が必須になります。最初はメールアドレスとパスワードで認証し、その後はトークンを使ってGraphQLにアクセスします。 client を使って処理します。

初回の認証は次のようになります。emailとパスワード、またはトークンが必須です。

await client.login({email, password, token});

後はこの client に対して処理を行います。

プロジェクトを取得する

プロジェクトはワークスペースに所属しています。そのため、以下のように段階を踏んでプロジェクトを取得します。 async/await を使っているので、注意してください。

// ワークスペースを取得
await client.setWorkspace('workspace_id');
const project = await client.currentWorkspace.project('project_id');

プログラム拡張とは

Hexabaseではプログラム拡張という機能を提供しています。これは、FaaS(Function as a Service)として呼び出せる機能で、任意のJavaScriptコード(Node.js)をクラウドに保存し、実行できる機能です。

プログラム拡張では、定数を登録できます。

1778 app.hexabase.com - 1126175211.jpg

この定数は環境変数とは異なり、プログラムコード中で {NAME} のように記述された部分が、定数の値に置き換えられます。

プログラム拡張の作成

プログラム拡張はプロジェクトの設定メニューから作成できます。関数を選択して、追加を押します。

1777 app.hexabase.com - 1126161602.jpg

中央のエディタ部に、JavaScriptコードを記述します。以下のようなコードを記述してみましょう。必ず main 関数を定義してください。

async function main (data) {
    // call your sub function
    const res = await sub(data);
    return res;
}

// you can define your sub-functions. (but should be kept to a minimum chars)
async function sub(data){
    return new Promise((resolve, reject) => {
        var ok = true; //some logics;
        if (ok) {
            resolve({result: "OK", data }); // return {result: "OK" } object to API result
        } else {
            reject({result: "NG", data });
        }
    });
}

この時、外部からリクエストするパラメーターは data.params の中に入っています。また、ベースになる data は、実行ユーザー情報が含まれています。

{
	"u_id": "62bac0fd2c87b9c2bf23a313",
	"user_name": "username",
	"email": "user@example.jp",
	"w_id": "644f6e5ab30d853869ec919f",
	"ws_key": "development",
	"p_id": "650a30501222568b1ae7a2c2",
	"p_display_id": "APP-FPtta3Hk",
	"real_ip": "",
	"user_code": ""
}

レスポンスはJSONなどを返せば、そのままAPIのレスポンスとして返されます。

プログラム拡張の呼び出し

プログラム拡張を呼び出すには、 execute メソッドを使います。このメソッドは、プログラム拡張のIDと、パラメーターを指定します。 program_id はプログラム拡張の、関数IDになります。

const res = await project.execute('program_id', {name: 'value'});

レスポンスの形式は任意なので、TypeScriptの場合はジェネリクスを使って定義します。

interface Response {
	result: string;
	data: any;
}
const res = await project.execute<Response>('program_id', {name: 'value'});

console.log(res.result);

まとめ

Hexabaseのプログラム拡張を使えば、サーバーがなくとも自分の書いたコードをサーバー上で実行できます。CORS制限や、セキュリティキーなどを公開せずにプログラミングコードを実行できるので安全です。

Hexabaseを使いこなす上でも、ぜひプログラム拡張を使ってみてください。

Hexabase | 新規事業向け開発・競争領域でのDX実現をサポート

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?