Docs 菜单
Docs 主页
/ /
Atlas Device SDKs
/ /

CRUD - 更新 - Node.js SDK

在此页面上

  • 更新对象
  • 更新或插入(upsert)对象
  • 批量更新集合

您可以在写事务(write transaction)中添加、修改或删除 Realm 对象的属性,就像更新任何其他 JavaScript 对象一样。

// Open a transaction.
realm.write(() => {
// Get a dog to update.
const dog = realm.objects("Dog")[0];
// Update some properties on the instance.
// These changes are saved to the realm.
dog.name = "Maximilian";
dog.age += 1;
});

提示

更新相关对象和嵌入式对象

要更新 嵌入式对象 相关对象 的属性,请使用 点表示法或方括号表示法 修改该属性 就像在常规的嵌套对象中一样。

要更新或插入对象,请调用Realm.create()并将更新模式设置为 modified 。 该操作要么插入具有给定主键的新对象,要么更新已具有该主键的现有对象。

realm.write(() => {
// Add a new person to the realm. Since nobody with ID 1234
// has been added yet, this adds the instance to the realm.
person = realm.create(
"Person",
{ _id: 1234, name: "Joe", age: 40 },
"modified"
);
// If an object exists, setting the third parameter (`updateMode`) to
// "modified" only updates properties that have changed, resulting in
// faster operations.
person = realm.create(
"Person",
{ _id: 1234, name: "Joseph", age: 40 },
"modified"
);
});

要将更新应用于对象集合,请遍历该集合(例如,使用 for...of )。在循环中,单独更新每个对象:

realm.write(() => {
// Create someone to take care of some dogs.
const person = realm.create("Person", { name: "Ali" });
// Find dogs younger than 2.
const puppies = realm.objects("Dog").filtered("age < 2");
// Loop through to update.
for (const puppy of puppies) {
// Give all puppies to Ali.
puppy.owner = person;
}
});

注意

反向关系

由于Dog.ownerPerson.dogs之间存在反向关系,每当我们将 Ali 设置为小狗的主人时,Realm 都会自动更新 Ali 的狗列表。

后退

读取