ニフクラ 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, NCMBQuery } from 'ncmb_ts'
// denoの場合
import NCMB, { NCMBUser, NCMBQuery, NCMBFile } from 'https://raw.githubusercontent.com/NCMBMania/ncmb_deno/master/deno/ncmb.ts'
const ncmb = new NCMB('YOUR_APPLICATION_KEY', 'YOUR_CLIENT_KEY')

テキストファイルのアップロード

ファイルアップロードは NCMBFile.upload を使います。テキストファイルの場合は次のようになります。返り値はNCMBFileです。

const fileName = 'test.csv';
const file = await NCMBFile.upload(fileName, '1,2,3');

ACL付きでアップロード

アクセス権限を付ける場合には3つ目の引数で指定します。

const acl = new NCMBAcl;
acl
  .setPublicReadAccess(false)
  .setUserWriteAccess(user, true)
  .setUserReadAccess(user, true);
const text = '1,2,3';
const fileName = 'acl2.csv';
const file = await NCMBFile.upload(fileName, text, acl);

バイナリファイルのアップロード

バイナリファイルの場合も基本的に同じですが、readFileの返り値を渡します。4つ目の引数はContentTypeになります。

const fileName = 'test.jpg';
const blob = await promisify(fs.readFile)(`./src/tests/${fileName}`);
const file = await NCMBFile.upload(fileName, blob, undefined, 'image/jpeg');

ファイルの削除

削除は delete メソッドを使います。

await file.delete();

ファイルのダウンロード

ダウンロードは File.dowload を使います。binaryを指定した場合、Blobで返ってきます。

const fileName = 'test.csv';
const file = await NCMBFile.upload(fileName, text, undefined, 'text/csv');
assert.equal(fileName, file.get('fileName'));
const download = await file.download('binary') as Blob;
assert.equal(text, await download.text());

ファイルの検索

検索は NCMBFile.query を使います。

const query = NCMBFile.query();
const files = await query.fetchAll();

まとめ

ファイルストアを使えばテキストファイルやバイナリファイルを自由にアップロードできます。アプリで撮影した写真をアップロードしたり、アプリ内で使う素材を保存するのに利用してください。

中津川 篤司

中津川 篤司

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