カスタム ユーザー データ - React Native SDK
カスタム ユーザー データと呼ばれる、アプリケーション ユーザーに関する任意のデータを React Native アプリケーション内で直接読み取ることができます。 たとえば、ユーザーの希望言語、誕生日、ローカル タイムゾーン を保存できます。
前提条件
React Native アプリからカスタム ユーザー データを操作する前に、App Services App で有効にする必要があります。 詳しくは、「 カスタム ユーザー データを有効にする 」を参照してください。
カスタムユーザーデータの読み取り
警告
カスタム データは古い可能性があります
App Services は、基礎となるドキュメントが変更された場合にユーザーのカスタム データを動的に更新しません。 代わりに、ユーザーがログインする時などアクセス トークンを更新するたびに、App Services はデータの新しいコピーを取得します。 これは変更をすぐに反映しないことを意味する可能性があります。 認証triggerからの更新 トークンが更新されない場合、SDK は 30 分待機した後、バックエンドへの次回の呼び出しで更新するため、カスタム ユーザー データは最大 30 分間、およびバックエンドへの次回の SDK 呼び出しが発生するまでの時間によって古くなる可能性があります。
カスタム ユーザー データを最近アップデートしていない場合は、ユーザー オブジェクトのcustomDataフィールドを使用します。 customData
フィールドは読み取り専用です。
過去30分以内にカスタム ユーザー データをアップデートした場合は、 User.refreshCustomData() を使用します。
import React, {useState, useEffect} from 'react'; import {useApp, useUser} from '@realm/react'; function ReadCustomUserData() { const user = useUser(); const [customUserData, setCustomUserData] = useState(); // Access current custom user data with `user.customData` function readCurrentCustomUserData() { setCustomUserData(user.customData); } // Refresh custom user data with `user.refreshCustomData()` async function refreshCustomUserData() { const data = await user.refreshCustomData(); setCustomUserData(data); } // ... }
カスタムユーザーデータの書込み
MongoDB Data Access を使用して、ユーザーのカスタム ユーザー データに書き込むことができます。
書込み操作には、アプリ バックエンドでカスタム ユーザー データを構成するときに設定する ユーザー ID フィールド に ユーザー .id を含める必要があります。ユーザー ID フィールドにユーザー ID を含めない場合、書込み (write) データはユーザーのカスタム ユーザー データにリンクされません。
import React, {useEffect} from 'react'; import {useApp, useUser} from '@realm/react'; function WriteCustomUserData() { const user = useUser(); async function writeCustomUserData(favoriteColor: string) { const customUserDataCollection = user .mongoClient('mongodb-atlas') .db('custom-user-data-database') .collection('custom-user-data'); const filter = { userId: user.id, // Query for the user object of the logged in user }; const updateDoc = { $set: { // Set User ID if it's not already set userId: user.id, // Set the logged in user's favorite color favoriteColor, }, }; const options = {upsert: true}; await customUserDataCollection.updateOne(filter, updateDoc, options); // Refresh custom user data once it's been updated on the server const customUserData = await user.refreshCustomData(); console.log(customUserData); } // ... }
注意
To modify the custom data field from a client or user function, write permission to the collection in which custom data is stored must be configured. アプリケーションからカスタム データへのクライアントの書込みアクセスを制限する場合は、システム関数からオブジェクトを変更できます。