Docs Menu
Docs Home
/ /
Atlas Device SDK
/ / /

CRUD - 업데이트 - Flutter SDK

이 페이지의 내용

  • 객체 업데이트
  • 객체 속성 업데이트
  • 객체 업서트

RealmObjects 에 대한 업데이트는 쓰기 트랜잭션(write transaction) 내에서 이루어져야 합니다. 쓰기 트랜잭션(write transaction)에 대한 자세한 내용은 쓰기 트랜잭션(write transaction)을 참조하세요 .

SDK는 업데이트 및 업서트 작업을 지원합니다. 업서트 작업은 객체 의 새 인스턴스 를 삽입하거나 특정 기준을 충족하는 기존 객체 를 업데이트합니다. 자세한 내용은 이 페이지의 객체 업서트 섹션을 참조하세요.

비대칭 객체는 업데이트할 수 없습니다. 이는 비대칭 객체가 데이터베이스에 유지되지 않는 특수 쓰기 전용 객체이기 때문입니다. 애플리케이션에서 비대칭 객체를 사용하는 방법에 대한 자세한 내용은 Atlas로 데이터 스트리밍 - Flutter SDK를 참조하세요.

이 페이지의 예시에서는 PersonTeam이라는 두 가지 객체 유형을 사용합니다.

@RealmModel()
class _Person {
@PrimaryKey()
late ObjectId id;
late String name;
late List<String> hobbies;
}
@RealmModel()
class _Team {
@PrimaryKey()
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);
});

돌아가기

읽기