機能的にはまだまだ少ないですが、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を使うようになると、より高度な検索が可能になります。ネットワークアクセス回数も減らせるので、アプリの使い勝手も向上することでしょう。