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

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

Deno/TypeScript用SDKでのクエリの使い方(count/order/limit/skip/or)

f:id:mbaasdevrel:20200609182129j:plain

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

NCMBMania/ncmb_deno: deno用のSDKです

今回はクエリの使い方です。基本的な絞り込み用オペランドはDeno/TypeScript用SDKで位置情報、クエリオペランドを追加しましたで紹介済みです。この記事ではその後追加したオペランドを紹介します。

インストール方法

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

npm install ncmb_ts -S

初期化

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

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

カウント

クエリの検索結果数を取得するのは fetchWithCount になります。ここで返ってくるカウントは検索結果の対象件数であり、取得数とは異なります。例えば1000件データが返ってきたとしても、カウントは2000という場合があります。これは次の結果があるということです。

const query = new NCMBQuery('QueryTest')
const {count, results} = await query
  .limit(6)
  .fetchWithCount()
console.log(results.length) // => 6
console.log(count) // => 10

検索結果件数の制限

検索結果を制限する場合には limit を使います。

const query = new NCMBQuery('QueryTest')
const results = await query
  .limit(6)
  .fetchAll()

並び替え

並び替えは order を使います。

const query = new NCMBQuery('QueryTest')
const results = await query
  .order('createDate')
  .fetchAll()

検索結果のスキップ

ページネーションで使うのが skip になります。

const query = new NCMBQuery('QueryTest')
const results = await query
  .skip(10)
  .fetchAll()

検索結果にポインターを含める

ポインターで示されているクラスも結果に含める場合は include を使います。

const query = new NCMBQuery('QueryTest')
const results = await query
  .include('user')
  .fetchAll()

includeを使った場合、そのフィールドはNCMBObjectとして取得されます。

results[0]
  .get('user')
  .get('name')

OR検索

複数のクエリをORでつないで検索する場合には or を使います。

// クエリ1
const query1 = new NCMBQuery('QueryTest');
query1.lessThan('date', new Date(2020, 8, 16, 9, 0, 0))

// クエリ2
const query2 = new NCMBQuery('QueryTest');
query2.lessThanOrEqualTo('number', 200)

const query = new NCMBQuery('QueryTest');
const ary = await query
  .or([query1, query2])
  .fetchAll()

まとめ

クエリ条件を細かく指定することで、より絞り込んだデータを取得できます。それはネットワーク速度の向上にもつながるので、Vue/React/Angularアプリの高速化にもつながるでしょう。ぜひ使いこなしてください。

中津川 篤司

中津川 篤司

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