質問: ### 前提・実現したいこと 現在Monacaでアプリ開発を始めたばかりですが、躓いてしまいました。御回答いただけますと幸いです。 ニフティのモバイルバックエンド(mBaaS)を使い、JavaScriptでレコードの追加をしたいと思っています。 既に以下のコードでレコードの追加自体はできているのですが、 uniqueKeyが1以上のレコードカウントを取得し、それに1インクリメントした値を uniqueKeyに入れてレコードを追加したいと思っていますが、 consoleのログを見る限り、「uniqueKeyNumの出力2」が最初にでてきているため、 上から順に実行されていない気がします。 また、2回ずつログが出ているのも謎です。 出力されているconsoleログは以下です。 ~ここから~ uniqueKeyNumの出力2 : uniqueKeyNumの出力2 : undifined results.countの出力 : 13 results.countの出力 : 13 uniqueKeyNumの出力 : 14 uniqueKeyNumの出力 : 14 ~ここまで~ ### ソースコード ``` ここはh1です。 追加 ここはdivです。 ```
回答: 非同期処理なので、こんな感じでどうでしょう? ``` // asyncを追加 async function addData() { // awaitに変更 var results = await TestData.greaterThanOrEqualTo('uniqueKey', 1) .count() .fetchAll(); console.log('results.countの出力 : ', results.count); uniqueKeyNum = results.count + 1; console.log('uniqueKeyNumの出力 : ', uniqueKeyNum); var col1Text = document.getElementById('col1').value; var col2Text = document.getElementById('col2').value; console.log('uniqueKeyNumの出力2 : ', uniqueKeyNum); if(col1Text != '' && col2Text != '') { // awaitの例外処理対応として try / catchを追加 try { var testData = new TestData(); // awaitに変更。キーチェーンメソッドに変更 var data = await testData.set('uniqueKey', uniqueKeyNum) .set('col1', col1Text) .set('col2', col2Text) .save(); // 処理成功 alert('保存しました。'); } catch (err) { // エラー処理 alert('保存に失敗しました。'); }; } } ``` もしかすると、addDataの呼び出し元も async/awaitにしないといけないかも知れません。 ``` 追加 ``` ``` 追加 ```