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

CRUD - アップデート - Flutter SDK

項目一覧

  • 更新オブジェクト
  • オブジェクト プロパティを更新
  • オブジェクトをアップサートする

RealmObjectsへの更新は書込みトランザクション内で発生する必要があります。 書込みトランザクション (write transaction) の詳細については、「書込みトランザクション (write transaction) 」を参照してください。

SDK はアップデートとアップサート操作をサポートします。 アップサート操作では、オブジェクトの新しいインスタンスが挿入されるか、特定の条件を満たす既存のオブジェクトが更新されます。 詳細については、このページの「アップサート オブジェクト」セクションを参照してください。

非対称オブジェクトは更新できません。 これは、非対称オブジェクトがデータベースに永続しない特殊な書込み専用オブジェクトであるためです。 アプリケーションで非対称オブジェクトを使用する方法の詳細については、「 Atlas へのデータのストリーム - Flutter SDK 」を参照してください。

このページの例では、 PersonTeamという 2 つのオブジェクトタイプを使用しています。

@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);
});

戻る

読み取り