사용자 지정 사용자 데이터 액세스 - 웹 SDK
개요
사용자 지정 사용자 데이터라고 하는 애플리케이션 사용자에 대한 임의 데이터를 웹 애플리케이션 내에서 직접 읽을 수 있습니다. 예를 들어 사용자의 기본 설정 언어, 생년월일 또는 현지 시간대를 저장할 수 있습니다.
Realm 은 연결된 클러스터 에서 MongoDB 컬렉션 을 참조하여 특정 사용자에 대한 사용자 지정 데이터를 찾지만 사용자 지정 사용자 데이터 문서를 추가하거나 업데이트 하지는 않습니다. 사용자는 컬렉션 의 사용자 데이터를 관리하고 업데이트할 책임이 있습니다. 사용자 지정 사용자 데이터 를 활성화 하고 구성하는 방법에 대한 자세한 내용은 사용자 지정 사용자 데이터 활성화를 참조하세요.
사용자 객체 예시
이 페이지의 코드 예제에서는 custom_data
필드 가 아직 설정하다 되지 않은 다음 사용자 객체 를 사용합니다.
{ id: '5f1f216e82df4a7979f9da93', type: 'normal', data: { email: 'test@example.com' }, custom_data: { _id: '5f20d083a37057d55edbdd57', userID: '5f1f216e82df4a7979f9da93', description: 'a test document for user: test@example.com', }, identities: [ { id: '5f1f216e82df4a7979f9da90', provider_type: 'local-userpass' } ] }
중요
사용자 지정 사용자 데이터를 사용하려면 먼저 사용자 지정 사용자 데이터 활성화를 실행해야 합니다.
사용자 지정 사용자 데이터 읽기
경고
사용자 지정 데이터가 오래되었을 수 있음
App Services는 기본 문서가 변경되는 경우 사용자의 사용자 지정 데이터를 동적으로 업데이트하지 않습니다. 대신 App Services는 사용자가 로그인할 때와 같이 액세스 토큰을 새로 고칠 때마다 데이터의 새 복사본을 가져옵니다. 즉, 사용자 지정 데이터가 인증 트리거의 업데이트와 같은 변경 사항을 즉시 반영하지 못할 수도 있습니다. 토큰을 새로 고치지 않으면 SDK는 30분 동안 기다렸다가 다음 백엔드 호출 시 토큰을 새로 고치므로 사용자 지정 사용자 데이터는 백엔드에 다음 SDK 호출이 발생할 때까지의 시간을 더한 최대 30분 동안 부실 상태가 될 수 있습니다.
로그인한 사용자의 사용자 지정 데이터의 읽기 전용 복사본은 Realm.User.customData 속성에서 직접 액세스할 수 있습니다.
// Access a logged in user's read-only custom data const customData = app.currentUser.customData;
사용자의 사용자 지정 데이터의 최신 버전을 수동으로 가져오려면 User.refreshCustomData()를 호출합니다.
// Refresh a user's custom data to make sure we have the latest version await app.currentUser.refreshCustomData();
출력
{ "_id": "5f233a3ac49aca916792de1d", "description": "a test document for user test@example.com", "userID": "5f1f298f757611faec901d0f", "favoriteColor": "pink" }
사용자의 사용자 지정 데이터 수정
참고
클라이언트 또는 사용자 함수에서 사용자 지정 데이터 필드를 수정하려면 사용자 지정 데이터가 저장된 컬렉션에 대한 쓰기 권한을 구성해야 합니다. 애플리케이션의 사용자 지정 데이터에 대한 클라이언트 쓰기 액세스를 제한하려는 경우에도 시스템 함수에서 객체를 수정할 수 있습니다.
앱의 사용자 지정 데이터 컬렉션에서 기본 문서를 업데이트하여 사용자 지정 데이터를 수정할 수 있습니다.
다음 예에서는 사용자의 사용자 지정 데이터를 업데이트하여 favoriteColor
속성을 "purple"
(으)로 설정합니다.
// Get a client object for your app's custom user data collection const mongo = app.currentUser.mongoClient(CLUSTER_NAME); const collection = mongo.db(DATABASE_NAME).collection(COLLECTION_NAME); // Log the user's favorite color before we change it console.log( "old favoriteColor: ", app.currentUser.customData.favoriteColor ); // Update the user's custom data document await collection.updateOne( { userId: app.currentUser.id }, // Query for the user object of the logged in user { $set: { favoriteColor: "purple" } } // Set the logged in user's favorite color to purple ); // Refresh the user's local customData property await app.currentUser.refreshCustomData(); // Log the user's new favorite color console.log( "new favoriteColor: ", app.currentUser.customData.favoriteColor );
출력
old favoriteColor: pink new favoriteColor: purple
요약
사용자 지정 사용자 데이터를 사용하여 애플리케이션 사용자에 대한 정보를 저장할 수 있습니다.
사용자 객체의 사용자 지정 사용자 데이터 필드는 읽기 전용이며, Atlas 서비스를 통해 CRUD 작업을 수행해야만 수정할 수 있습니다.