添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

类 对象<T,RequiredProperties>

Realm 对象的基类。

例子

要定义具有所需 name age 属性的 Person 类,请定义一个 static schema

class Person extends Realm.Object<Person> {
_id!: Realm.BSON.ObjectId;
name!: string;
age!: number;
static schema: Realm.ObjectSchema = {
name: "Person",
primaryKey: "_id",
properties: {
_id: "objectId",
name: "string",
age: "int",
},
};
}

例子

如果使用@realm/babel-plugin :要定义具有必需nameage属性的类Person ,需要在构造类型参数时指定这些属性,以支持仅使用 Typescript 的模型定义:

class Person extends Realm.Object<Person, "name" | "age"> {
_id = new Realm.Types.ObjectId();
name: Realm.Types.String;
age: Realm.Types.Int;
static primaryKey = "_id";
}

对象模式

类型参数

T - 此类的类型(例如,如果您的类为Person ,则T也应为Person - 由于 TypeScript 的工作原理,此重复项是必需的)

类型参数

RequiredProperties - 使用new构造实例时所需的该类的任何属性的名称。 任何未指定的属性都是可选的,如果其他地方没有指定默认值,则默认为合理的 null 值。

类型参数

构造函数

属性

允许值数组 布尔 = false
不对称 ?: 布尔

(可选)在使用 @realm/babel-plugin 时,如果使用了 Flexible Sync,则可以指定模式应单向同步。

嵌入式 ?: 布尔

使用 @realm/babel-plugin 时,可以选择指定模式为嵌入式模式。

主键 ?: 字符串

使用 @realm/babel-plugin 时,可以选择指定模式的主键。

方法

  • 添加侦听器 callback ,当 活动 对象实例发生更改时将调用该侦听器。

    参数

    • 回调 : ObjectChangeCallback < T >

      发生更改时要调用的函数。

    • Optional keyPaths : string | string []

      指示与侦听器相关的更改的下限。 这是一个下限,因为如果添加了多个侦听器(每个侦听器都有自己的 keyPaths ),这些键路径的并集将确定被视为与在该对象上注册的所有侦听器相关的更改。 换言之:如果存在具有不同键路径的其他侦听器,则侦听器触发的次数可能会超过键路径指定的次数。

    返回 void

    抛出异常

    如果 callback 不是函数,则出现 TypeAssertionError

    例子

    wine.addListener((obj, changes) => {
    // obj === wine
    console.log(`object is deleted: ${changes.deleted}`);
    console.log(`${changes.changedProperties.length} properties have been changed:`);
    changes.changedProperties.forEach(prop => {
    console.log(` ${prop}`);
    });
    })

    例子

    wine.addListener((obj, changes) => {
    console.log("The wine got deleted or its brand might have changed");
    }, ["brand"])

    注意

    添加侦听器是一项异步操作,因此首次调用回调以在添加侦听器时通知调用者。 因此,首次调用回调时,它将包含changes.changedProperties的空数组。