Realm 数据库。

构造函数

  • 在默认路径中创建一个新的Realm 实例

    返回Realm

    抛出异常

    打开不兼容的同步 Realm 时出现错误。

  • 在提供的路径中创建一个新的Realm实例。

    参数

    • 路径字符串

      首次创建 Realm 时必需。

    返回Realm

    抛出异常

    如果无法在提供的路径打开 Realm,则会出现错误。

    抛出异常

    打开不兼容的同步 Realm 时出现错误。

  • 使用提供的配置创建新的Realm 实例。如果config.path中尚不存在 Realm(如果未提供,则为 Realm.defaultPath ),则此构造函数将使用提供的config.schema (本例中为必填项)创建该 Realm。 否则,该实例将从该路径的文件访问现有 Realm。 在这种情况下, config.schema可选的或没有更改,除非config.schemaVersion递增,在这种情况下,Realm 将自动迁移以使用新模式。 对于基于查询的同步,需要config.schema 。 如果未定义config.schema ,则会引发异常。

    参数

    • config配置

      首次创建 Realm 时必需。

    返回Realm

    抛出异常

    如果提供的配置中的任何内容无效,则出现错误。

    抛出异常

    打开不兼容的同步 Realm 时出现错误。

属性

before 通知侦听器: any
变更监听器: any
: any
处理初始订阅: any

如果需要,使用初始订阅更新订阅。

参数:initialSubscriptions

初始订阅。

参数:realmExists

Realm 是否已存在。

schema extras: any
schema 监听器: any
同步会话: null | 会话

同步会话(如果这是同步 Realm)

默认路径: 字符串
确定加密密钥: any
确定路径: any

注意

当路径为相对路径且配置包含同步对象时,Core 将替换任何现有文件扩展名或添加“.realm” 后缀。

确定模式模式: any
提取模式额外内容: any
内部: any
规范化路径: any

TODO:考虑通过确保 ".realm" 后缀(在此过程中与其他 SDK 团队协调)

包装迁移: any

访问器

  • get isClosed ( ) : boolean
  • 指示此 Realm 是否已关闭。

    返回布尔值

    true 如果已关闭,则为false

    since

    2.1.0

  • get isEmpty ( ) : boolean
  • 指示此 Realm 是否包含任何对象。

    返回布尔值

    true 如果为空,则为false ,否则为空。

    since

    1.10.0

  • get isInMemory ( ) : boolean
  • 指示此 Realm 是否在内存中打开。

    返回布尔值

    true 如果此 Realm 位于内存中,则为false

  • get isInMigration ( ) : boolean
  • 指示此 Realm 是否正在迁移。

    返回布尔值

    true 如果正在迁移,则为false否则

    since

    12.3.0

  • get isInTransaction ( ) : boolean
  • 指示此 Realm 是否处于写事务(write transaction)中。

    返回布尔值

    true 如果处于写事务(write transaction)中,否则为false

    since

    1.10.3

  • get isReadOnly ( ) : boolean
  • 指示此 Realm 是否以只读方式打开。

    返回布尔值

    true 如果此 Realm 为只读,则为false

    since

    0.12.0

  • get path ( ) : string
  • 存储此 Realm 的文件的路径。

    返回字符串

    一个字符串,其中包含存储此 Realm 的文件的路径。

    since

    0.12.0

  • get schemaVersion ( ) : number
  • Realm 的当前模式版本。

    返回数字

    此 Realm 的模式版本,形式为number

    since

    0.12.0

  • 获取订阅( ) : SubscriptionSet
  • 最新的 Flexible Sync 订阅集。

    返回SubscriptionSet

    一个SubscriptionSet对象。

    抛出异常

    如果未为此应用启用 Flexible Sync,则会出现错误。

方法

  • 类型参数

    • t 扩展 对象<默认对象, 从不, t>

    参数

    • type : Constructor < T >
    • objectKey : string

    返回undefined | T

  • 为指定的 eventName 添加侦听器回调。

    参数

    • eventName : RealmEventName

      应导致调用回调的事件的名称。

    • 回调 : RealmListenerCallback

      发生变更事件时调用的函数。 对于每个事件,每个回调只会调用一次,无论该事件被添加多少次。

    返回void

    抛出异常

    如果提供的事件 eventName 无效、Realm 已关闭或回调不是函数,则会出现错误。

  • 启动写事务(write transaction)。

    进行事务时,强烈建议进行错误处理。 如果不处理错误,数据可能会不一致。 错误处理通常涉及取消事务。

    返回void

    抛出异常

    如果已处于写事务(write transaction)中,则出现错误

    例子

    realm.beginTransaction();
    try {
    realm.create('Person', { name: 'Arthur Dent', origin: 'Earth' });
    realm.create('Person', { name: 'Ford Prefect', origin: 'Betelgeuse Five' });
    realm.commitTransaction();
    } catch (e) {
    realm.cancelTransaction();
    throw e;
    }
  • 取消写事务(write transaction)。

    返回void

  • 关闭此 Realm,以便可以使用较新的模式版本将其重新打开。 调用此方法后,此 Realm 中的所有对象和collection都不再有效。该方法是幂等的。

    返回void

  • 提交写事务(write transaction)。

    返回void

  • 将此 Realm 中的所有字符串列替换为字符串枚举列,并压缩数据库文件。

    无法从写事务(write transaction)中调用。

    如果存在其他Realm实例,则不会进行压缩。

    正在进行压实时,其他线程或进程打开数据库的尝试将等待。

    请注意,压实所需的资源与数据库中的实时数据量成正比。压实的工作原理是将数据库内容写入临时数据库文件,然后用临时数据库替换数据库。

    返回布尔值

    true 如果压缩成功,则返回false

  • 创建给定类型和指定属性的新RealmObject 。 For objects marked asymmetric, undefined is returned. 非对称对象的 API 将来可能会发生变化。

    类型参数

    • T =默认对象

    参数

    • type : string

      要创建的 Realm 对象的类型。

    • 部分< T > |部分<非托管< T > >

      没有默认值的所有必需属性的属性值。

    • Optional 模式布尔值|从不|已修改|全部

      可选更新模式。 默认值为UpdateMode.Never

    返回对象 < T ,从不> & T

    RealmObjectundefined如果对象是非对称的)。

  • 类型参数

    参数

    返回T

  • 删除提供的 Realm 对象,或提供的 collection 内的每个对象。

    参数

    • subject :任何

      要删除的 Realm 对象,或包含多个要删除的 Realm 对象的 collection。

    返回void

  • 警告:这将删除 Realm 中的所有对象!

    返回void

  • 删除 Realm 模型,包括其所有对象。 如果在迁移函数外部调用,schemaschemaVersion会被更新。

    参数

    • name : string

      模型名称。

    返回void

  • 按主键搜索 Realm 对象。

    类型参数

    • T =默认对象

    参数

    • type : string

      要搜索的 Realm 对象的类型。

    • PrimaryKey : T [ keyof T ]

      要搜索的对象的主键值。

    返回null | 对象 < T , none > & T

    一个RealmObject ,如果没有找到对象,则为null

    抛出异常

    如果传递给此方法的类型无效,或者Realm 对象类型没有在模式中指定primaryKey,或者它被标记为非对称,则出现错误。

    since

    0.14.0

  • 类型参数

    参数

    • type : Constructor < T >
    • PrimaryKey : T [ keyof T ]

    返回null | T

  • 返回 Realm 中给定类型的所有对象。

    类型参数

    • T =默认对象

    参数

    • type : string

      要检索的 Realm 对象的类型。

    返回结果< 对象 < T , none > & T >

    在创建、修改和销毁对象时实时更新的结果。

    抛出异常

    如果传递给此方法的类型无效或者该类型被标记为嵌入式或不对称,则出现错误。

  • 类型参数

    • t 扩展 对象<any, 从不, t> = Object < DefaultObject ,从不> & DefaultObject

    参数

    • type : Constructor < T >

    返回结果< T >

  • 删除所有事件侦听器(仅限于事件 eventName,如果提供)。

    参数

    • Optional eventName : RealmEventName

      应删除其侦听器的事件的名称。

    返回void

    抛出异常

    提供无效的事件 eventName 时出现错误。

  • 删除指定事件 eventName 的侦听器回调。

    参数

    返回void

    抛出异常

    如果提供的事件 eventName 无效、Realm 已关闭或者回调不是函数,则会出现错误。

  • 在写事务(write transaction)中同步调用提供的回调。如果事务内部发生异常,您将丢失该事务中的更改,但 Realm 本身不会受到影响(或损坏)。 更准确地说,将自动调用beginTransactioncommitTransaction 。 如果在事务期间抛出任何异常,则将调用cancelTransaction而不是commitTransaction ,并且该异常将被重新抛出给write的调用者。

    嵌套事务(在 write 中调用 write )是不可能的。

    类型参数

    • t

    参数

    • 回调 : ( ( ) => T )

      要在写事务(write transaction)中调用的函数。

        • (): t
        • 返回T

    返回T

    回调的返回值。

  • 使用给定配置写入 Realm 的压缩副本。

    目标文件不能已存在。 支持同步和非同步 Realm 之间的所有转换,并将根据描述所需输出的配置参数执行。

    请注意,如果从写事务中调用此方法,则写入当前数据,而不是提交上一个写事务时的数据。

    参数

    • config配置

      描述输出 Realm 的 Realm 配置。

    返回void

  • Private

    通过关闭并删除默认目录中的任何 Realm 并注销所有用户来清除状态。 注意:不是公共 API 的一部分,主要在库的测试中使用。

    返回void

  • 复制任何 Realm 文件(即 *.realm )从应用程序目录复制到应用程序的文档目录中,以便 Realm 可以打开和使用它们。 如果该文件已存在于文档目录中,则不会覆盖该文件,因此可以安全地多次调用该文件。

    应在打开 Realm 之前调用此函数,以便将捆绑的 Realm 文件移动到可以写入的位置。

    返回void

    例子

    // Given a bundled file, example.realm, this will copy example.realm (and any other .realm files)
    // from the app bundle into the app's documents directory. If the file already exists, it will
    // not be overwritten, so it is safe to call this every time the app starts.
    Realm.copyBundledRealmFiles();

    const realm = await Realm.open({
    // This will open example.realm from the documents directory, with the bundled data in.
    path: "example.realm"
    });

    这仅适用于 React Native。

    抛出异常

    如果发生 I/O 错误或未实现方法,则返回错误。

  • 为 Realm 模型类创建模板对象,其中所有可选字段均未定义,所有必填字段均具有给定数据类型的默认值,该值要么是模式中默认属性设置的值,要么是数据类型的默认值,如果模式未指定 1,即 0、false 和 ""。

    类型参数

    • t 扩展 记录<字符串, 未知>

    参数

    • objectSchema : ObjectSchema

      描述应创建的对象的模式。

    返回T

  • 删除给定配置的 Realm 文件。

    参数

    • config配置

      正在删除的 Realm 的配置。

    返回void

    抛出异常

    如果提供的配置中的任何内容无效,则出现错误。

  • 检查磁盘上是否已存在 Realm。

    参数

    • 路径字符串

      Realm 的路径。

    返回布尔值

    true 如果设备上存在该 Realm,则返回false

    抛出异常

    如果提供的路径中的任何内容无效,则出现错误。

  • 检查磁盘上是否已存在 Realm。

    参数

    • config配置

      Realm 的配置。

    返回布尔值

    true 如果设备上存在该 Realm,则返回false

    抛出异常

    如果提供的配置中的任何内容无效,则出现错误。

  • 使用 Promise 异步打开默认 Realm。

    返回ProgressRealmPromise

    在 Realm 实例可用时,将使用 Realm 实例来解决的 Promise。

  • 使用 Promise 异步打开 Realm。 如果 Realm 已同步,则在可用之前将完全同步。

    参数

    • 路径字符串

      Realm 的路径。

    返回ProgressRealmPromise

    在 Realm 实例可用时,将使用 Realm 实例来解决的 Promise。

  • 使用 Promise 异步打开 Realm。 如果 Realm 已同步,则在可用之前将完全同步。 对于基于查询的同步,需要Configuration.schema 。 如果未定义Configuration.schema ,则会引发异常。

    参数

    • config配置

      Realm 的配置。

    返回ProgressRealmPromise

    在 Realm 实例可用时,将使用 Realm 实例来解决的 Promise。

    抛出异常

    如果提供的配置中的任何内容无效,则出现错误。

  • 获取给定路径中 Realm 的当前模式版本。

    参数

    • 路径字符串

      存储 Realm 数据库的文件的路径。

    • Optional EncryptionKey : ArrayBuffer | EncryptionKey ArrayBufferView

      仅在访问加密 Realm 时需要。

    返回数字

    整数形式的模式版本;如果路径中不存在 Realm,则为-1

    抛出异常

    如果传递无效或不匹配的加密密钥,则出现错误。

    since

    0.11.0

  • 设置日志级别。

    参数

    • level : LogLevel

      记录器要使用的日志级别。 默认值为info

    • Optional 类别"Realm" | "Realm.Storage" | "Realm.Storage.Transaction" | "Realm.Storage.Transaction" | "Realm.Storage.Query" | "Realm.Storage.Object" | "Realm.Storage.Notification" | "Realm.Sync" | "Realm.Sync.Client" | "Realm.Sync.Client.Session" | "Realm.Sync.Client.Changeset" | "Realm.Sync.Client.Network" | "Realm.Sync.Client.Reset" | "Realm.Sync.Server" | "Realm.App" | "Realm.SDK"

      要为其设置日志级别的类别。 如果省略,则为所有类别设置日志级别 ( "Realm" )。

    返回void

    注意

    可以在应用程序的生命周期内更改日志级别。

    since

    12.0.0

    例子

    Realm.setLogLevel("all");
    
  • 设置记录器回调。

    参数

    • loggerCallback : LoggerCallback 2

      记录器调用的回调。 默认回调使用console.logconsole.warnconsole.error ,具体取决于消息级别。

    返回void

    注意

    在打开第一个 Realm 之前,需要设置记录器回调。

    since

    12.0.0

    例子

    Realm.setLogger(({ category, level, message }) => {
    console.log(`[${category} - ${level}] ${message}`);
    });
  • 设置记录器回调。

    参数

    • loggerCallback : LoggerCallback 1

      记录器调用的回调。 默认回调使用console.logconsole.warnconsole.error ,具体取决于消息级别。

    返回void

    注意

    在打开第一个 Realm 之前,需要设置记录器回调。

    since

    12.0.0

    已弃用

    改为传递采用单个对象参数的回调。

    例子

    Realm.setLogger((level, message) => {
    console.log(`[${level}] ${message}`);
    });
  • 关闭所有 Realm,取消所有待处理的 Realm.open调用,清除内部缓存,重置记录器并收集垃圾。 调用此方法可释放事件循环,并允许 Node.js 执行从容退出。

    返回void

使用TypeDoc生成