CRUD - 업데이트 - Flutter SDK
이 페이지의 내용
Atlas Device SDK는 더 이상 사용되지 않습니다. 자세한 내용은 지원 중단 페이지 를 참조하세요.
RealmObjects
에 대한 업데이트는 쓰기 트랜잭션(write transaction) 내에서 이루어져야 합니다. 쓰기 트랜잭션(write transaction)에 대한 자세한 내용은 쓰기 트랜잭션(write transaction)을 참조하세요 .
SDK는 업데이트 및 업서트 작업을 지원합니다. 업서트 작업은 객체 의 새 인스턴스 를 삽입하거나 특정 기준을 충족하는 기존 객체 를 업데이트합니다. 자세한 내용은 이 페이지의 객체 업서트 섹션을 참조하세요.
비대칭 객체는 업데이트할 수 없습니다. 이는 비대칭 객체가 데이터베이스에 유지되지 않는 특수 쓰기 전용 객체이기 때문입니다. 애플리케이션에서 비대칭 객체를 사용하는 방법에 대한 자세한 내용은 Atlas로 데이터 스트리밍 - Flutter SDK를 참조하세요.
객체 업데이트
이 페이지의 예시에서는 Person
및 Team
이라는 두 가지 객체 유형을 사용합니다.
()class _Person { () late ObjectId id; late String name; late List<String> hobbies; } ()class _Team { () late ObjectId id; late String name; late List<_Person> crew; late RealmValue eventLog; }
객체 속성 업데이트
객체의 속성을 수정하려면 쓰기 트랜잭션(write transaction) 차단에서 속성을 업데이트합니다.
realm.write(() { spaceshipTeam.name = 'Galactic Republic Scout Team'; spaceshipTeam.crew .addAll([Person(ObjectId(), 'Luke'), Person(ObjectId(), 'Leia')]); });
객체 업서트
객체 를 업서트 하려면 Realm .add() 트랜잭션 차단 내에서 선택적 update
플래그를 로 true
설정하다 합니다. 이 작업은 해당 기본 키 키를 가진 객체 가 존재하지 않는 경우 지정된 기본 키 를 가진 새 객체 를 삽입합니다. 해당 기본 키 를 가진 객체 가 이미 있는 경우 이 작업은 해당 기본 키 의 기존 객체 를 업데이트합니다.
final id = ObjectId(); // Add Anakin Skywalker to the realm with primary key `id` final anakin = Person( id, "Anakin Skywalker", ); realm.write(() { realm.add<Person>(anakin); }); // Overwrite the 'Anakin' Person object // with a new 'Darth Vader' object final darthVader = Person(id, 'Darth Vader'); realm.write(() { realm.add<Person>(darthVader, update: true); });