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

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

denoで使えるSDKを開発中です(データストアの更新、検索)

f:id:mbaasdevrel:20200609182129j:plain

最近話題になっているdenoはご存じでしょうか。JavaScriptの実行環境としてNode.jsは知っていると思いますが、その開発者がNode.jsでの課題を解決すべく、一から作り直したのがdenoになります。 "node".split('').sort().join('') で表されるのがdenoになります。

denoはTypeScriptをベースにしていたり、ルートでasync/awaitをサポートしている、package.jsonを使わずに外部ライブラリをインポートできるなどの仕組みがあります。そんなdeno向けのNCMB SDKを非公式ながら開発開始しました。

今回はデータストアでの更新、さらに検索を行う方法を紹介します。

使い方

まず、denoをインストールします。

Deno

オブジェクトを保存するコードは次のようになります。test.tsとして保存してください。GitHub上にあるファイルを直接指定しているのが分かるでしょうか。

import NCMB from 'https://raw.githubusercontent.com/goofmint/ncmb_deno/master/ncmb.ts'

まずNCMBを初期化します。

const applicationKey = 'aaa'
const clientKey = 'bbb'
const ncmb = new NCMB(applicationKey, clientKey)

オブジェクトは次のようにして作成します。JavaScript SDKよりも、SwiftやJavaなどのSDKに寄せています。

const hello = ncmb.Object('HelloDeno')

後は値を設定して保存します。ルートでasync/awaitが使えますので、非同期処理も簡単に書けます。

await hello
  .set('message', 'Hello world')
  .set('number', 100)
  .save()

getで値を取得できます。

// 保存できていればオブジェクトIDが出力されます
console.log(hello.get('objectId'))

更新

更新も同じく save メソッドで行います。

await hello
  .set('number', 200)
  .save()

検索

データを検索する際には ncmb.Query を使います。

const query = ncmb.Query('HelloDeno')
query.equalTo('objectId', 'ypk03ZHeJxjSnSM1')
query.limit(1)
const results = await query.fetchAll()
console.log(results)

オペランドは今のところ equalTo だけです。今後増やしていきます。その他、 limit/offset を用意してあります。

実行

--allow-net はネットワークアクセスする際に必須です。

deno run --allow-net test.ts

初回実行時にライブラリをダウンロードします。

コードについて

コードはNCMBMania/ncmb_deno: deno用のSDKですにて公開しています。ライセンスはMIT Licenseになります。実装時の参考にしてください。

まとめ

まだ開発をはじめたばかりなので、バージョンはありません。将来的にはバージョンを付けて公開しますので、少々お待ちください。

中津川 篤司

中津川 篤司

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