ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

Deno/TypeScript用SDKでのサブクエリの使い方

f:id:mbaasdevrel:20200609182129j:plain

機能的にはまだまだ少ないですが、Deno/TypeScript用のSDKを開発中です。TypeScriptで作られており、VueやReact、Angularとの組み合わせでも利用できます。

NCMBMania/ncmb_deno: deno用のSDKです

今回はサブクエリの使い方です。クエリの基本的な使い方はこちらのクエリオペランドに関する記事をご覧ください。この記事ではさらに詳細なデータ検索を可能にするサブクエリの使い方を紹介します。

インストール方法

インストールは普段使っているnpmやYarnで可能です。

npm install ncmb_ts -S

初期化

初期化は次のように行います。

// Node.jsの場合
import NCMB, { NCMBUser, NCMBQuery } from 'ncmb_ts'
// denoの場合
import NCMB, { NCMBUser, NCMBQuery } from 'https://raw.githubusercontent.com/NCMBMania/ncmb_deno/master/deno/ncmb.ts'
const ncmb = new NCMB('YOUR_APPLICATION_KEY', 'YOUR_CLIENT_KEY')

サブクエリとは

サブクエリは、あるクエリの検索結果に含まれるデータで絞り込むというものです。通常、2回APIリクエストが必要なところを1回で済ませることができます。これはAPIアクセス数を減らすのはもちろん、ネットワーク利用数を減らすことで速度が向上できます。

クエリの検索結果のフィールドを利用する

以下の例では、クエリ(queryTest2)の検索結果の num フィールドの値を使って、クエリ(queryTest)の number フィールドを検索します。

const queryTest2 = new NCMBQuery('Test2');
queryTest2.in('num', [1,4]);

const queryTest = new NCMBQuery('Test');
const ary = await queryTest
  .select('number', 'num', queryTest2)
  .fetchAll();

ポインターを使っている場合はinQuery

ある検索結果が、別なクラスのポインターに指定されている場合、inQueryが利用できます。以下はクエリ(queryTest)の検索結果がポインターとして設定されている(Test2クラス)を検索する例です。includeで同じフィールド名を指定することで、その値も取得できます。

const queryTest = new NCMBQuery('Test');
queryTest.in('number', [1,4]);
const queryTest2 = new NCMBQuery('Test2');
const ary = await queryTest2
  .inQuery('num', queryTest)
  .include('num')
  .fetchAll();

まとめ

サブクエリのselect/inQueryを使うようになると、より高度な検索が可能になります。ネットワークアクセス回数も減らせるので、アプリの使い勝手も向上することでしょう。

NCMBMania/ncmb_deno: deno用のSDKです

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。