managed 사용자 지정 사용자 데이터 - Kotlin SDK
이 페이지에서는 App Services 앱의 사용자 지정 사용자 데이터와 Realm 코틀린 SDK (Kotlin SDK)로 이를 관리하는 방법에 대해 설명합니다.
중요
현재는 코틀린 SDK(Kotlin SDK)로만 사용자 지정 사용자 데이터를 읽을 수 있습니다. 향후 SDK 업데이트를 통해 SDK의 사용자 지정 사용자 데이터를 작성할 수도 있습니다.
Atlas Function과 함께 다른 Realm SDK 중 하나를 사용하거나 Atlas에 직접 쿼리하여 사용자 지정 사용자 데이터를 생성, 업데이트 또는 삭제할 수 있습니다.
Atlas App Services를 사용하면 사용자의 기본 설정 언어, 생년월일 또는 현지 시간대와 같은 인증된 사용자와 데이터를 연결할 수 있습니다. 사용자에 대한 이 임의의 사용자 지정 사용자 데이터 를 저장하고 클라이언트 애플리케이션에서 읽을 수 있습니다.
버전 1.9.0의 새로운 기능
EJSON 인코더를 사용하여 사용자 지정 사용자 데이터를 직렬화할 수 있습니다. 예제를 포함한 자세한 내용 은 Atlas용 EJSON 인코딩을 참조하세요.
전제 조건
사용자 지정 사용자 데이터를 사용하려면 사용자 지정 사용자 데이터가 활성화된 App Services App이 있어야 합니다.
사용자 지정 사용자 데이터를 사용하는 App Services App을 설정하려면 다음을 참조하세요.
App Services 문서에서 사용자 지정 사용자 데이터 활성화
사용자 지정 사용자 데이터 읽기
User.customDataAsBsonDocument() 메서드 를 사용하여 현재 로그인한 사용자의 사용자 지정 사용자 데이터를 확장 함수:
val user = app.currentUser!! val customUserData = user.customDataAsBsonDocument()
Atlas App Services 는 기본 데이터가 변경될 때 클라이언트 사이드 사용자 사용자 지정 데이터 문서 의 값을 즉시 동적으로 업데이트 하지 않습니다 . 대신 App Services 는 사용자가 액세스 토큰을 새로 고칠 때마다 또는 명시적으로 User.refreshCustomData() 를 호출할 때마다 가장 최근 버전의 사용자 지정 사용자 데이터 를 가져옵니다. 함수를 사용하여 사용자의 사용자 지정 데이터의 최신 버전을 요청 합니다.
// Update the custom data object user.refreshCustomData() // Now when you access the custom data, it's the // updated data object val updatedUserData = user.customDataAsBsonDocument()
Atlas Function으로 사용자 지정 사용자 데이터 쓰기
Atlas Function을 사용하여 사용자 지정 사용자 데이터에 쓸 수 있습니다. Atlas Function은 백엔드 앱에 내장된 서버 측 JavaScript 함수입니다. Realm 코틀린 SDK (Kotlin SDK)에서 직접 Atlas Function을 호출 할 수 있습니다.
현재 Realm 코틀린 SDK (Kotlin SDK)에서 직접 사용자 지정 사용자 데이터에 쓸 수 없습니다 .
Atlas Function에서 사용자 지정 사용자 데이터를 추가하는 데에는 단일 패턴이 없습니다. 애플리케이션의 사용 사례에 맞게 함수를 작성해야 합니다.
이 예제에서 Atlas Function은 클라이언트가 전달한 객체를 가져와서 Atlas의 사용자 지정 사용자 데이터 컬렉션에 추가합니다. 함수는 사용자 지정 사용자 데이터가 아직 존재하지 않는 경우 이를 생성하고, 존재하는 경우 모든 데이터를 대체합니다.
exports = async function writeCustomUserData(newCustomUserData) { const userId = context.user.id; const customUserDataCollection = context.services .get("mongodb-atlas") .db("custom-user-data-database") .collection("custom-user-data"); const filter = { userId }; // Replace the existing custom user data document with the new one const update = { $set: newCustomUserData }; // Insert document if it doesn't already exist const options = { upsert: true }; const res = await customUserDataCollection.updateOne(filter, update, options); return res; };
이 함수를 호출하는 코틀린 SDK (Kotlin SDK) 코드는 다음과 같습니다.
// Write the custom user data through a call // to the `writeCustomUserData` function val functionResponse = user.functions .call<BsonDocument>("writeCustomUserData", mapOf("userId" to user.id, "favoriteColor" to "blue") ) // Refreshed custom user data contains updated // `favoriteColor` value added in above Atlas Function call user.refreshCustomData() val updatedUserData = user.customDataAsBsonDocument()
참고
Atlas Functions에 대해 자세히 알아보려면 다음 문서를 참조하세요:
App Services 문서의 Atlas Function
Atlas Function으로 사용자 지정 데이터 삭제하기
사용자 지정 사용자 데이터는 사용자 객체에 연결된 문서에 저장됩니다.
중요
사용자를 삭제 해도 사용자 지정 사용자 데이터 는 삭제 되지 않습니다 . 법률 컴플라이언스 를 위해 사용자 데이터를 완전히 삭제 해야 할 수 있습니다( 예시:Apple의 계정 삭제 요구 사항).
사용자 지정 사용자 데이터를 삭제하려면 사용자의 사용자 지정 데이터 문서를 수동으로 삭제해야 합니다.
Atlas Function을 사용하여 사용자 지정 사용자 데이터를 삭제할 수 있습니다. 현재 Realm 코틀린 SDK (Kotlin SDK)에서 사용자 지정 사용자 데이터를 직접 삭제할 수 없습니다.
이 예제에서 Atlas Function에는 인수가 필요하지 않습니다. 함수는 함수 컨텍스트를 사용하여 호출자의 사용자 ID를 확인하고, 사용자의 ID와 일치하는 사용자 지정 사용자 데이터 문서를 삭제합니다.
exports = async function deleteCustomUserData() { const userId = context.user.id; const customUserDataCollection = context.services .get("mongodb-atlas") .db("custom-user-data-database") .collection("custom-user-data"); const filter = { userId }; const res = await customUserDataCollection.deleteOne(filter); return res; };
이 함수를 호출하는 코틀린 SDK (Kotlin SDK) 코드는 로그인한 사용자만 함수를 호출하면 됩니다.
val deleteResponse = user.functions .call<BsonDocument>("deleteCustomUserData")