FJCT_ニフクラ 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 } 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')

追加されたクエリオペランドについて

データストアの検索は次のように行います。JavaScript SDKに似せてあります。

(async () => {
  const query = new NCMBQuery('QueryTest');
  const results1 = await query.equalTo('string', 'Hello').fetchAll()
  console.log('equalTo', results1.length, results1[0].get('objectId'))

  const query.reset()
  const results2 = await query.notEqualTo('string', 'Hello').fetchAll()
  console.log('notEqualTo', results2.length, results2[0].get('objectId'))
})();

追加されたオペランドは次のようになっています。殆どのオペランドは追加してあります。このインタフェースもJavaScript SDKに似せています。

  • equalTo(key: string, value:any): NCMBQuery
  • setOperand(key: string, value:any, ope: string|null): NCMBQuery
  • notEqualTo(key: string, value:any): NCMBQuery
  • lessThan(key: string, value: number | Date): NCMBQuery
  • lessThanOrEqualTo(key: string, value: number | Date): NCMBQuery
  • greaterThan(key: string, value: number | Date): NCMBQuery
  • greaterThanOrEqualTo(key: string, value: number | Date): NCMBQuery
  • in(key: string, values: any): NCMBQuery
  • notIn(key: string, values: any): NCMBQuery
  • exists(key: string, exist: boolean | null): NCMBQuery
  • regularExpressionTo(key: string, regex: string): NCMBQuery
  • inArray(key: string, values: any): NCMBQuery
  • notInArray(key: string, values: any): NCMBQuery
  • allInArray(key: string, values: any): NCMBQuery
  • near(key: string, location: NCMBGeoPoint): NCMBQuery
  • withinKilometers(key: string, location: NCMBGeoPoint, maxDistance: number): NCMBQuery
  • withinMiles(key: string, location: NCMBGeoPoint, maxDistance: number): NCMBQuery
  • withinRadians(key: string, location: NCMBGeoPoint, maxDistance: number): NCMBQuery
  • withinSquare(key: string, southWestVertex: NCMBGeoPoint, northEastVertex: NCMBGeoPoint): NCMBQuery

位置情報について

位置情報を扱う際には NCMBGeoPoint を利用してください。

// Node.jsの場合
import { NCMB, NCMBGeoPoint } from 'ncmb_ts'
// denoの場合
import { NCMB, NCMBGeoPoint } from 'https://raw.githubusercontent.com/NCMBMania/ncmb_deno/master/ncmb.ts'

後はインスタンスを作ってデータストアやクエリで利用します。

  const geo = new NCMBGeoPoint(35.0, 100.0);
  const hello = new NCMBObject('HelloDeno')
  await hello
    .set('message', 'Hello world')
    .set('number', 100)
    .set('geo', geo)
    .save()

ポインターも使えるようになっています。なお、ポインターとして指定されるデータはあらかじめ保存されている必要があります。

  const geo = new NCMBGeoPoint(35.0, 100.0);
  const hello2 = new NCMBObject('HelloDeno')
  await hello2
    .set('message', 'Hello world')
    .set('number', 100)
    .set('data', hello)
    .set('geo', geo)
    .save()

まとめ

クエリのオペランドが増えれば、より柔軟にデータ検索ができるようになります。データストアを使いこなす上で大事な機能になりますので、ぜひ知っておいてください。位置情報はアプリの機能で大事なものになりますので、こちらもぜひ活用してください。

NCMBMania/ncmb_deno: deno用のSDKです

中津川 篤司

中津川 篤司

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