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