NCMBには多彩な機能があります。データベースのようにデータを保存するデータストア、ファイルを保存するファイルストア、認証、プッシュ通知、スクリプトなどの機能が用意されています。これらの機能を使いこなせば、自由にアプリケーションを拡張できるでしょう。
そんな各種機能を手軽に試せるように、プレイグラウンドを用意しました。今回はデータストアを試せる環境です。
実際に試す
試せる環境は以下になります。データを保存(自分が好きな果物の名前を入力してください)して、さらにその表示ができます。
データは自分だけ閲覧、更新可能なものとして保存されます。他の人が保存したデータはACL(アクセス権限)によって閲覧できません。
仕組み
このプレイグラウンドではデータストアへの保存と取得を行っています。また、前提条件として匿名認証を行っています。
匿名認証の実行
匿名認証はID、パスワードなしで認証を可能にする仕組みです。これは次のようなコードで実行されています。
try { if (ncmb.User.getCurrentUser()) { await ncmb.DataStore('Hello') .fetch(); return; } } catch (e) { } // 匿名認証の実行 ncmb.User.loginAsAnonymous();
すでに認証済みの場合 ncmb.User.getCurrentUser()
にユーザデータが返ってきます。もし認証している場合でも、セッションが有効期限切れになっている場合があります。そこでデータストアの取得処理を通じて、セッションの有効性を確認しています。
もしセッションが無効だったり、認証が行われていない場合には ncmb.User.loginAsAnonymous()
を行って匿名認証を実行しています。
データストアへの保存
ここからの処理は main.html の中に記述されています。参考にしてください。
データストアへの保存処理 saveData
は次のようになります。アクセス権限の設定では、ログインしているユーザ情報を取得して、 setUserReadAccess
と setUserWriteAccess
でユーザに対する読み込み(書き込み)権限を付与しています。
そしてデータの保存時にACLを設定して保存することで、特定のユーザ(今回はログインしているユーザ)のみ読み書きできるデータとしています。
// データ保存ボタンを押した際の処理 async function saveData() { const name = await ons.notification.prompt('好きな果物の名前を入力してください'); if (name === '') return; // アクセス権限の設定 const acl = new ncmb.Acl(); const user = ncmb.User.getCurrentUser(); acl .setUserReadAccess(user, true) .setUserWriteAccess(user, true); const SaveData = ncmb.DataStore('SaveData'); const saveData = new SaveData; // 保存処理の実行 await saveData .set('name', name) .set('acl', acl) .save(); await ons.notification.alert('保存しました'); }
データの取得
データの取得処理 getData
はとても簡単な処理です。以下のように呼び出すだけで、保存されているデータが返ってきます。
// NCMBからデータを取得する処理 function getData() { const SaveData = ncmb.DataStore('SaveData'); return SaveData .fetchAll(); }
まとめ
実際に動いているコードがあると動作の確認がしやすいでしょう。他の機能向けのプレイグラウンドも作成していくので、NCMBを利用する際の参考にしてください。