最近話題になっているdenoはご存じでしょうか。JavaScriptの実行環境としてNode.jsは知っていると思いますが、その開発者がNode.jsでの課題を解決すべく、一から作り直したのがdenoになります。 "node".split('').sort().join('')
で表されるのがdenoになります。
denoはTypeScriptをベースにしていたり、ルートでasync/awaitをサポートしている、package.jsonを使わずに外部ライブラリをインポートできるなどの仕組みがあります。そんなdeno向けのNCMB SDKを非公式ながら開発開始しました。
今回はデータストアでの更新、さらに検索を行う方法を紹介します。
使い方
まず、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になります。実装時の参考にしてください。
まとめ
まだ開発をはじめたばかりなので、バージョンはありません。将来的にはバージョンを付けて公開しますので、少々お待ちください。