ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

ログインユーザの情報を更新した際にはキャッシュも更新しましょう

f:id:mbaasdevrel:20171212211252p:plain

JavaScript SDKではログインユーザの情報をlocalStorageに保存しています。そのため、APIを消費せずにログインユーザの情報を確認できます。しかし、ユーザ情報を更新した際、この情報は自動で更新されません。

今回はログインユーザの情報更新に伴うTipsを紹介します。

名前などを変更する場合

ユーザ名など、setメソッドを使って情報を更新する場合には、そのままユーザデータをlocalStorageに書き出せば問題ありません。この時のキーは NCMB/(アプリケーションキー)/currentUser となっています。

user = ncmb.User.getCurrentUser();
await user
  .set('companyName', 'FJCT')
  .update();
localStorage.setItem(`NCMB/${ncmb.apikey}/currentUser`, JSON.stringify(user));

addUniqueなどを使う場合

配列に対してユニークなデータを追加するaddUniqueや数字を更新するIncrementを使った場合、その結果はサーバサイドの処理実行後しか分かりません。そのため、データを保存した後、ユーザデータを取得し直します。

このユーザ情報にはセッショントークンが含まれていません。そのまま保存するとログアウトした状態になってしまいます。そこで ncmb.sessionToken を使ってセッショントークンを設定し直します。後は先ほどと同じようにlocalStorageに保存するだけです。

user = ncmb.User.getCurrentUser();
await user.addUnique('favorites', 'tomato').update();
user = await ncmb.User.equalTo('objectId', user.objectId).fetch();
user.set('sessionToken', ncmb.sessionToken)
localStorage.setItem(`NCMB/${ncmb.apikey}/currentUser`, JSON.stringify(user));

まとめ

ユーザデータを更新しておかないと、再読込した際に以前の状態に戻ってしまいます。そして、その最新データはオンラインにあります。データの不整合が起きないよう、クラウドのデータを取得して、キャッシュを更新するようにしましょう。

中津川 篤司

中津川 篤司

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