MonacaでニフティmBaaSのデータストアを使ってみます。
プロジェクトの作成
Monacaにログインして、「新規プロジェクトの作成」を選択します。
今回はサンプルアプリを選択します。
一覧の中から「Nifty mBaaS Blank」を選択します。
プロジェクト名を入力して「プロジェクトを作成する」をクリックします。
プロジェクトの作成が完了しました。
データストアへの登録
index.htmlのbody内に入力エリアとボタンを追加します。
HTML
<input type="text" name="add" id="add"> <button onClick="addData();">追加</button>
head内に空のscriptタグがありますので、その中にデータストアへ登録するJavaScriptを記述します。
JavaScript
var APIKEY = 'アプリケーションキー'; var CLIENTKEY = 'クライアントキー'; // データストアを使う準備 var ncmb = new NCMB(APIKEY, CLIENTKEY); var TestData = ncmb.DataStore('TestData'); function addData() { var addText = document.getElementById('add').value; if(addText != '') { var testData = new TestData(); testData.set('dataName', addText) .save() .then(function(data) { // 保存後の処理 alert('保存しました。'); }) .catch(function(err) { // エラー処理 alert('保存に失敗しました。'); }); } }
管理画面上でデータが登録できていることが確認できました。
set(‘フィールド名’, ‘登録内容’)で登録したい内容をセットして、save()でデータストアへ登録します。
登録後に成功・失敗毎で何か処理を行いたい場合、then()とcatch()で行えます。
データストアからの取得
先ほどの登録するサンプルにコードを追加して、データストアから値を取得してみます。
HTML
取得ボタンをクリックしたときに、console.logで取得データを表示するようにしてみます。
<input type="text" name="add" id="add"> <button onClick="addData();">追加</button> <button onClick="getData();">取得</button>
JavaScript
var APIKEY = 'アプリケーションキー'; var CLIENTKEY = 'クライアントキー'; // データストアを使う準備 var ncmb = new NCMB(APIKEY, CLIENTKEY); var TestData = ncmb.DataStore('TestData'); function addData() { var addText = document.getElementById('add').value; if(addText != '') { var testData = new TestData(); testData.set('dataName', addText) .save() .then(function(data) { // 保存後の処理 alert('保存しました。'); }) .catch(function(err) { // エラー処理 alert('保存に失敗しました。'); }); } } function getData() { TestData.fetchAll() .then(function(results){ console.log(results); }) .catch(function(err){ alert('取得に失敗しました'); }); }
fetchAll()は指定したデータストアから全てのデータを取得するもので、今回の場合はTestDataのデータストアから全てのデータを取得してきます。
実際にMonacaデバッカーで試してみると、Monaca開発環境のconsoleに取得内容が表示されます。
データストアの上書き
先ほど登録したデータをアプリ上から上書きしてみます。
HTML
更新ボタンをクリックすると、入力内容でデータを上書きするようにしてみます。
<input type="text" name="add" id="add"> <button onClick="addData();">追加</button> <button onClick="getData();">取得</button> <button onClick="updateData();">更新</button>
JavaScript
var APIKEY = 'アプリケーションキー'; var CLIENTKEY = 'クライアントキー'; // データストアを使う準備 var ncmb = new NCMB(APIKEY, CLIENTKEY); var TestData = ncmb.DataStore('TestData'); function addData() { var addText = document.getElementById('add').value; if(addText != '') { var testData = new TestData(); testData.set('dataName', addText) .save() .then(function(data) { // 保存後の処理 alert('保存しました。'); }) .catch(function(err) { // エラー処理 alert('保存に失敗しました。'); }); } } function getData() { TestData.fetchAll() .then(function(results){ console.log(results); }) .catch(function(err){ alert('取得に失敗しました'); }); } function updateData() { var addText = document.getElementById('add').value; if(addText != '') { TestData.equalTo('objectId', 'B921Nyu7K29wwWA6').fetch().then(function(results) { results.set('dataName', addText).update(); }); } }
先ほどのデータの取得はfetchAll()を使いましたが、今回はequalTo(‘フィールド名’, ‘内容’)で取得したいレコードを指定してからfetch()で取得しています。
取得した値に対してset(‘フィールド名’, ‘登録内容’)で上書きする内容をセットしてupdate()で上書きを行います。
equalTo()でobjectIdを指定していますが、これはレコード毎に自動で与えられるユニークなIDで、今回の場合は特定のレコードを上書きしたかったので’B921Nyu7K29wwWA6’と固定で指定しています。
【参考サイト】
コメントが承認されるまで時間がかかります。