사용자 지정 사용자 데이터 - Flutter SDK
Atlas App Services 를 사용하여 사용자에 대한 임의의 사용자 지정 데이터를 저장 수 있습니다. 예를 예시 사용자의 기본 설정 언어 , 생년월일 또는 현지 시간대를 저장 수 있습니다. 이 데이터를 쓰고 읽기 전에 백엔드 에서 사용자 지정 사용자 데이터 를 활성화 해야 합니다. 학습 보려면 사용자 지정 사용자 데이터 활성화를 참조하세요.
중요
Currently you can only read custom user data with the Flutter SDK. 향후 SDK 업데이트를 통해 SDK의 사용자 지정 사용자 데이터를 작성할 수도 있습니다.
Atlas Function과 함께 다른 Realm SDK 중 하나를 사용하거나 Atlas에 직접 쿼리하여 사용자 지정 사용자 데이터를 생성, 업데이트 또는 삭제할 수 있습니다.
시작하기 전에
사용자 지정 사용자 데이터를 사용하려면 먼저 App Services에서 사용자 지정 사용자 데이터를 활성화해야 합니다.
사용자의 사용자 지정 사용자 데이터 읽기
User.customData 에서 사용자 지정 사용자 데이터 를 조회 합니다. 로그인한 사용자의 속성 :
final customUserData = user.customData;
App Services 는 기본 데이터가 변경될 때 User.customData
값을 즉시 동적으로 업데이트 하지 않습니다 . 대신 App Services 는 사용자가 액세스 토큰 을 새로 고칠 때마다 또는 명시적으로 User.refreshCustomData() 를 호출할 때 최신 버전의 사용자 지정 사용자 데이터 를 가져옵니다. 를 지정하여 앱 에 최신 사용자 지정 사용자 데이터 가 있는지 확인합니다.
// refreshCustomData() returns the updated custom data object final updatedCustomData = await user.refreshCustomData(); // Now when you access User.customData it's the value // returned from User.refreshCustomData()
Realm 함수로 사용자 지정 사용자 데이터 쓰기
Atlas Function을 사용하여 사용자 지정 사용자 데이터에 쓸 수 있습니다. Atlas Function은 백엔드 앱에 내장된 서버 측 JavaScript 함수입니다. Realm Flutter SDK에서 직접 Atlas Function을 호출할 수 있습니다.
Realm Flutter SDK에서 직접 사용자 지정 사용자 데이터에 쓸 수는 없습니다.
Atlas Functions에 대해 자세히 알아보려면 다음 문서를 참조하세요:
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; };
이 함수를 호출하는 Realm SDK 코드:
final user = app.currentUser!; final updatedTimestamp = DateTime.now().millisecondsSinceEpoch; final updatedCustomUserData = { "userId": user.id, "favoriteFood": "pizza", "lastUpdated": updatedTimestamp }; final functionResponse = await user.functions .call("writeCustomUserData", [updatedCustomUserData]); // Contains the `updatedCustomUserData` object just added // in the above Atlas Function call final customUserData = await user.refreshCustomData();