사용자 지정 사용자 데이터 - React Native SDK
사용자 지정 사용자 데이터라고 하는 애플리케이션 사용자에 대한 임의 데이터를 React Native 애플리케이션 내에서 직접 읽을 수 있습니다. 예를 들어 사용자의 기본 설정 언어, 생년월일 또는 현지 시간대를 저장할 수 있습니다.
전제 조건
React Native 앱 의 사용자 지정 사용자 데이터 로 작업하려면 먼저 App Services App 에서 해당 데이터를 활성화 해야 합니다. 학습 내용은 사용자 지정 사용자 데이터 활성화를 참조하세요.
사용자 지정 사용자 데이터 읽기
경고
사용자 지정 데이터가 오래되었을 수 있음
App Services는 기본 문서가 변경되는 경우 사용자의 사용자 지정 데이터를 동적으로 업데이트하지 않습니다. 대신 App Services는 사용자가 로그인할 때와 같이 액세스 토큰을 새로 고칠 때마다 데이터의 새 복사본을 가져옵니다. 즉, 사용자 지정 데이터가 인증 트리거의 업데이트와 같은 변경 사항을 즉시 반영하지 못할 수도 있습니다. 토큰을 새로 고치지 않으면 SDK는 30분 동안 기다렸다가 다음 백엔드 호출 시 토큰을 새로 고치므로 사용자 지정 사용자 데이터는 백엔드에 다음 SDK 호출이 발생할 때까지의 시간을 더한 최대 30분 동안 부실 상태가 될 수 있습니다.
최근에 사용자 지정 사용자 데이터를 업데이트하지 않은 경우 사용자 객체의 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 필드 에 User.id 가 포함되어야 합니다. 사용자 ID 필드에 사용자 ID를 포함하지 않으면 작성하는 데이터가 사용자의 사용자 지정 사용자 데이터에 연결되지 않습니다.
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); } // ... }
참고
클라이언트 또는 사용자 함수에서 사용자 지정 데이터 필드를 수정하려면 사용자 지정 데이터가 저장된 컬렉션에 대한 쓰기 권한을 구성해야 합니다. 애플리케이션의 사용자 지정 데이터에 대한 클라이언트 쓰기 액세스를 제한하려는 경우에도 시스템 함수에서 객체를 수정할 수 있습니다.