相关类
常量
重新导出“bson”包,无需显式依赖“bson”包即可访问 BSON 类型。
成员
指示此 Realm 是否已关闭。
类型:
boolean
指示此 Realm 是否包含任何对象。
类型:
boolean
指示此 Realm 是否处于写事务(write transaction)中。
类型:
boolean
指示此 Realm 是否以只读方式打开。
类型:
boolean
存储此 Realm 的文件的路径。
类型:
string
构造此 Realm 时在Configuration
中提供的模式的规范化表示。
类型:
[CanonicalObjectSchema, ...]
此 Realm 的当前模式版本。
类型:
number
获取最新的 Flexible Sync 订阅集。
类型:
Realm.App.Sybc.SubscriptionSet
如果这是同步 Realm,则获取同步会话
类型:
Session
Constructor
- config 可选
- 类型:
Configuration
首次创建 Realm 时必需。
-
Error
如果提供的
config
中的任何内容无效。
-
IncompatibleSyncedRealmError
当打开不兼容的同步 Realm 时
使用提供的config
创建新的Realm
实例。 如果在config.path
处尚不存在 Realm(如果未提供,则在Realm.defaultPath
处)尚不存在,则此构造函数将使用提供的config.schema
创建该 Realm(在本例中是必需的)。 否则,实例将从该路径的文件访问现有 Realm。 在这种情况下, config.schema
为可选项,保持不变,除非config.schemaVersion
递增,在这种情况下,Realm 将自动迁移以使用新模式。 对于基于查询的同步,需要config.schema
。 如果未定义config.schema
,则会引发异常。
参数:
抛出异常:
方法
-
Error
如果发生 I/O 错误或未实施方法。
- 模式
- 类型:
ObjectSchema
描述类的对象
- config
- 类型:
Configuration
Realm 的配置。
-
Error
如果提供的
config
中的任何内容无效。
- config
- 类型:
Configuration
如果没有定义配置,则会打开默认 Realm
-
Error
如果提供的
config
中的任何内容无效。
- 一个 Promise,当 Realm 实例可用时,将使用 Realm 实例来解决该 Promise。
- 路径
- 类型:
string
存储 Realm 数据库的文件的路径。
- encryptionKey 可选
- 类型:
ArrayBuffer
或ArrayBufferView
仅在访问加密 Realm 时需要。
-
Error
传递无效或不匹配的加密密钥时。
- 名称
- 类型:
string
应导致调用回调的事件的名称。 目前,仅支持 "change" 和 "schema" 事件。
- callback
- 类型:
callback(Realm, string)
或callback(Realm, string, Schema)
发生变更事件时调用的函数。 对于每个事件,每个回调只会调用一次,无论该事件被添加多少次。
-
Error
如果提供的事件无效,或者
name
callback
不是函数。
-
Error
当已处于写事务(write transaction)中时
- 类型
- 类型:
ObjectType
要创建的 Realm 对象的类型。
- 属性
- 类型:
Object
没有默认值的所有必需属性的属性值。
- updateMode 可选
- 类型:
boolean
或string
- 默认:
'never'
可选更新模式。 它可以是以下值之一 - 'never':仅创建对象。 如果存在现有对象,则会引发异常。 这是默认值。 - 'all':如果找到现有对象,提供的所有属性都将更新,任何其他属性将保持不变。 - 'modified':如果现有对象存在,则仅更新值实际更改的属性。 这提高了通知和服务器端性能,但也对如何合并跨设备的变更产生了影响。 对于大多数使用案例,该行为与应如何合并变更的直观行为相匹配,但如果将更新整个对象视为原子操作,则不应使用此模式。
- 对象
- 类型:
Realm.Object
或[Realm.Object, ...]
或Realm.List
或Realm.Results
- 类型
- 类型:
ObjectType
要搜索的 Realm 对象的类型。
- key
- 类型:
number
或string
要搜索的对象的主键值。
-
Error
如果传递到此方法的类型无效,或者Realm 对象类型的 中没有指定
primaryKey
ObjectSchema
。
- 类型
- 类型:
ObjectType
要检索的 Realm 对象的类型。
-
Error
如果传递给此方法的类型无效,或者该类型标记为嵌入式或不对称。
- 名称 可选
- 类型:
string
应删除其侦听器的事件的名称。 目前,仅支持 "change" 和 "schema" 事件。
-
Error
当提供的事件
name
无效时
- 名称
- 类型:
string
事件名称。 目前,仅支持 "change" 和 "schema" 事件。
- callback
- 类型:
callback(Realm, string)
或callback(Realm, string, Schema)
之前通过
addListener
方法添加为此事件的监听器的函数。-
Error
如果提供的事件无效,或者
name
callback
不是函数。
- callback
- 类型:
function
- 输入Realm可以是本地或基于分区的同步、加密或未加密
- 输出Realm将是本地或基于分区的同步、加密或未加密,具体取决于传递给函数的配置
- {@link
Realm~Configuration |描述输出 Realm 的配置。
复制任何 Realm 文件(即 *.realm
)从应用程序目录复制到应用程序的文档目录中,以便 Realm 可以打开和使用它们。 如果该文件已存在于文档目录中,则不会覆盖该文件,因此可以安全地多次调用该文件。
应在打开 Realm 之前调用此函数,以便将捆绑的 Realm 文件移至可写入的位置,例如:
// 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。
抛出异常:
为 Realm 模型类创建模板对象,其中所有可选字段均为undefined
,所有必填字段均具有给定数据类型的默认值,该值可以是模式中default
属性设置的值,也可以是数据类型(如果模式未指定数据类型),即0
、 false 和""
。
参数:
boolean
检查磁盘上是否已存在 Realm。
参数:
抛出异常:
boolean
返回 ,否则返回true
false
。
ProgressPromise
使用 Promise 异步打开 Realm。 如果 Realm 已同步,则在可用之前将完全同步。 对于基于查询的同步,需要config.schema
。 如果未定义config.schema
,则会引发异常。
参数:
抛出异常:
ProgressPromise
number
获取给定路径中 Realm 的当前模式版本。
参数:
抛出异常:
number
版本;如果path
-1
为指定的事件 添加侦听器callback
name
。
参数:
抛出异常:
启动写事务(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)。
beginTransaction()
关闭此 Realm,以便可以使用较新的模式版本将其重新打开。 调用此方法后,此 Realm 中的所有对象和collection都不再有效。该方法是幂等的。
提交写事务(write transaction)。
beginTransaction()
true
将此 Realm 中的所有字符串列替换为字符串枚举列,并压缩数据库文件。
无法从写事务(write transaction)中调用。
Realm
如果存在其他实例,则不会进行压实。
正在进行压实时,其他线程或进程打开数据库的尝试将等待。
请注意,压实所需的资源与数据库中的实时数据量成正比。压实的工作原理是将数据库内容写入临时数据库文件,然后用临时数据库替换数据库。
返回:如果压实成功,则返回true
。
Realm.Object
创建给定类型和指定属性的新 Realm 对象。 对于注释为非对称的对象模式,不会返回任何对象。 非对称对象模式的 API 将来可能会发生变化。
参数:
Realm.Object
删除提供的 Realm 对象,或提供的 collection 内的每个对象。
参数:
警告:这将删除 Realm 中的所有对象!
Realm.Object
or null
按主键搜索 Realm 对象。
参数:
抛出异常:
Realm.Object
;如果未找到对象,则返回null
。
Realm.Results
返回 Realm 中给定type
的所有对象。
参数:
抛出异常:
Realm.Results
,它将在创建和销毁对象时进行实时更新。
删除所有事件侦听器(仅限于事件name
,如果提供)。
参数:
抛出异常:
删除指定事件callback
的侦听器name
。
参数:
抛出异常:
*
在写事务(write transaction)中同步调用提供的callback
。如果事务内部发生异常,您将丢失该事务中的更改,但 Realm 本身不会受到影响(或损坏)。 更准确地说,系统会自动调用beginTransaction()
和commitTransaction()
。 如果在事务期间引发任何异常,则将调用cancelTransaction()
而不是commitTransaction()
,并且该异常将被重新抛出给write()
的调用者。
无法进行嵌套事务(在write()
中调用write()
)。
参数:
*
的返回值。
使用给定的输出配置写入 Realm 的压缩副本:
目标 Realm 路径不能已存在。
请注意,如果从写事务中调用此方法,则写入当前数据,而不是提交上一个写事务时的数据。
参数:
类型定义
- 名称
- 类型:
string
表示 Realm 对象类型。
- 主键 可选
- 类型:
string
"string"
或"int"
属性的名称,该名称在同一 Realm 内的所有该类型对象中必须是唯一的。- 嵌入式 可选
- 类型:
boolean
如果 Realm 对象类型为嵌入式,则为 true。嵌入式对象最多只能链接到一个父对象。 默认值:false。
- 属性
- 类型:
{<string>: (PropertyType | ObjectSchemaProperty | ObjectSchema), ...}
一个对象,其中键是属性名称,值表示属性类型。
- 名称
- 类型:
string
此属性的名称。
- 类型
- 类型:
PropertyType
此属性的类型。
- 属性 可选
- 类型:
string
使用
"linkingObjects"
时,该值将表示链接对象上的链接属性- 可选
- 类型:
boolean
表示此属性可以赋值为
null
或undefined
。 对于Realm 对象类型的"list"
、"dictionary"
或"set"
属性,这表示列表内的值是否可以分配为null
或undefined
。 Realm 对象类型的"list"
或"set"
属性以及"linkingObjects"
属性不支持此功能。- 已索引
- 类型:
boolean
表示此属性已编制索引。 仅支持
"string"
、"int"
和"bool"
属性。- mapTo
- 类型:
string
此属性已设置的别名。
- encryptionKey 可选
- 类型:
ArrayBuffer
或ArrayBufferView
用于加密和解密 Realm 中所有数据的 512 位(64 字节)加密密钥。
- onMigration 可选
- 类型:
callback(Realm, Realm)
需要迁移时运行的函数。 此函数应提供将Realm 数据模型从先前模式转换为新模式的所有逻辑。此选项与
sync
不兼容。 该函数有两个参数:oldRealm
- 执行迁移之前的 Realm。newRealm
- 使用最新schema
的 Realm,应根据需要进行修改。
- deleteRealmIfMigrationNeeded 可选
- 类型:
boolean
- 默认:
false
指定在需要迁移时是否应删除此 Realm。 此选项在同步 Realm 上不可用。
- shouldCompact 可选
- 类型:
callback(number, number)
在进程生命周期中首次打开 Realm 时调用的函数,用于确定是否应在将其返回给用户之前对其进行压缩。 该函数接受两个参数: -
totalSize
- 文件总大小(数据 + 可用空间) -usedSize
- 文件中数据使用的总字节数。 它返回true
以指示应尝试压缩文件。 如果另一个进程正在访问它,则将跳过压实。- onFirstOpen 可选
- 类型:
callback(realm)
首次打开 Realm 时调用的函数。 该函数可以在打开 Realm 之前对其进行填充。 调用回调时,Realm 将处于写事务(write transaction)。该回调接受一个参数: -
realm
- The Realm- 路径 可选
- 类型:
string
- 默认:
Realm.defaultPath
应存储 Realm 数据库的文件的路径。 对于同步 Realm,将相对路径与应用程序 ID 和用户 ID 一起使用,以避免与其他应用程序或用户发生冲突。 绝对路径保持不变,在某些平台(iOS 和 Android)上,应用程序可能没有创建或打开文件的权限 - 权限未经验证。 如果指定了相对路径,则相对于
Realm.App~AppConfiguration.baseFilePath
。- fifoFilesFallbackPath 可选
- 类型:
string
打开 Realm 会创建许多 FIFO 特殊文件,以便协调跨线程和进程对 Realm 的访问。 如果 Realm 文件存储在不允许创建 FIFO 特殊文件(例如 FAT32 文件系统),则无法打开 Realm。 在这种情况下,Realm 需要一个不同的位置来存储这些文件,并且该属性定义了该位置。 FIFO 特殊文件非常轻量,主 Realm 文件仍将存储在
path
属性定义的位置。 如果path
定义的目录允许 FIFO 特殊文件,则忽略此属性。- inMemory 可选
- 类型:
boolean
- 默认:
false
指定是否应在内存中打开此 Realm。 这仍然需要一个路径(可以是默认路径)来标识 Realm,以便其他进程可以打开同一个 Realm。 如果 Realm 大于内存大小,则该文件也将用作交换空间,但它不是持久性的,并且会在关闭最后一个实例时被删除。 此选项与
sync
不兼容。- 只读 可选
- 类型:
boolean
- 默认:
false
指定此 Realm 是否应以只读方式打开。
- disableFormatUpgrade 可选
- 类型:
boolean
- 默认:
false
指定如果此 Realm 的文件格式是使用旧版本的 Realm 库创建的,是否应自动升级该文件格式。 如果设置为
true
并且需要升级文件格式,则会引发错误。- 模式 可选
- 类型:
[(ObjectClass | ObjectSchema), ...]
指定此 Realm 中的所有 Realm 对象类型。首次在此
path
创建 Realm 时为必填项。 如果省略,将从现有 Realm 文件中读取模式。- 模式版本 可选
- 类型:
number
更改
schema
后为必填项(且必须递增)。- 同步 可选
- 类型:
SyncConfiguration
同步配置参数。
- 模式
- 类型:
ObjectSchema
指定对象模式信息的静态属性。
- 名称
- 类型:
string
表示 Realm 对象类型。
- 主键 可选
- 类型:
string
"string"
或"int"
属性的名称,该名称在同一 Realm 内的所有该类型对象中必须是唯一的。- 嵌入式 可选
- 类型:
boolean
如果 Realm 对象类型为嵌入式,则为 true。嵌入式对象最多只能链接到一个父对象。 默认值:false。
- 不对称 可选
- 类型:
boolean
如果 Realm 对象类型 仅用于非对称同步,则为 true。这意味着该类型的对象不会存储在本地,也无法在本地访问。
- 属性
- 类型:
{<string>: (PropertyType | ObjectSchemaProperty | ObjectSchema), ...}
一个对象,其中键是属性名称,值表示属性类型。
- 类型
- 类型:
PropertyType
此属性的类型。
- objectType 可选
- 类型:
PropertyType
当
type
为"list"
、"set"
、"dictionary"
或"linkingObjects"
时为必需,并且必须与同一模式中的对象类型匹配,或者对于"list"
、"set"
或"dictionary"
,其他类型,可以存储为 Realm 属性。- 属性 可选
- 类型:
string
当
type
为"linkingObjects"
时为必填项,并且必须与objectType
中指定的类型上的属性名称相匹配,而链接到此属性所属的类型。- 访问 可选
- 类型:
any
如未另行指定,此属性在创建时的默认值。
- 可选 可选
- 类型:
boolean
指示该属性是否可以赋值为
null
或undefined
。 对于非对象类型的"list"
、"dictionary"
或"set"
属性,这表示列表内的值是否可以分配为null
或undefined
。 Realm 对象类型的"list"
或"set"
属性以及"linkingObjects"
属性不支持此功能。- 已索引 可选
- 类型:
boolean
指示是否应对此属性编制索引。 仅支持
"string"
、"int"
和"bool"
属性。- mapTo 可选
- 类型:
string
如果 Javascript 属性名称与 Realm 文件中使用的名称不同,请将其设置为 Realm 文件中底层属性的名称。 这可以例如 在 Javascript 中采用与 Realm 文件中使用的命名规则不同的命名规则。 必须使用公共名称读取和写入属性。 可以使用公共和底层属性名称进行查询。
- t
[]
表示该属性是一个Realm.List ,其值的类型为T - t
<>
表示该属性是一个Realm.Set ,由类型为T的值组成 - "bool"
- 类型:
boolean
属性值可以是
true
或false
。- "int"
- 类型:
number
可以为属性分配任何数字,但将存储为四舍五入整数,这意味着小数点之后的任何内容都将被截断。
- "float"
- 类型:
number
可以为属性分配任意数字,但会存储为
float
,这可能会导致精度损失。- "double"
- 类型:
number
可以为属性分配任意数字,并且不会损失精度。
- "string"
- 类型:
string
属性值可以是任意字符串。
- "decimal128"
- 类型:
Decimal128
属性值可以是
Decimal128
对象(有关详细信息,请参阅bson
)。- "objectId"
- 类型:
ObjectId
属性 valye 可以是
ObjectId
对象(有关详细信息,请参阅bson
)。- "date"
- 类型:
Date
可以为属性分配任何
Date
实例。- "data"
- 类型:
ArrayBuffer
可以为属性分配
ArrayBuffer
或ArrayBufferView
(例如DataView
、Int8Array
、Float32Array
等)实例,但将始终作为ArrayBuffer
返回。- "list"
- 类型:
Realm.List
可以为属性分配任何有序集合(例如
Array
、Realm.List
、Realm.Results
)全部与 {ObjectSchemaProperty
} 中指定的objectType
匹配的对象。- "set"
- 类型:
Realm.Set
可以为属性分配所有与 {
ObjectSchemaProperty
} 中指定的objectType
匹配的对象数组(例如Array
)。- "dictionary"
- 类型:
Realm.Dictionary
属性可以分配给键/值对。
- "linkingObjects"
- 类型:
Realm.Results
属性为只读,并且始终返回与
objectType
匹配的所有对象的 {Realm.Results
},这些对象通过ObjectSchemaProperty
中指定的property
关系链接到当前对象。- "<ObjectType>"
- 类型:
Realm.Object
与同一模式中对象的
name
匹配的字符串(请参阅ObjectSchema
)——该属性可以从同一 Realm 内部分配给该类型的任何对象,并且始终是可选的(这意味着它也可以分配给null
或undefined
)。
从打开的 Realm 检索到的模式可能具有与输入模式不同的结构。
类型:
Object
属性:
类型:
Object
属性:
这描述了用于创建Realm
实例的不同选项。
有关如何在此库中使用 HTTP 正向代理的详细信息,请参阅在 HTTP proxy 后面使用 Realm JavaScript 。
类型:
Object
属性:
Realm 对象将从该构造函数的prototype
继承方法、getter 和 setter。 强烈建议此构造函数继承Realm.Object
。
类型:
Class
属性:
类型:
Object
属性:
示例:
let MyClassSchema = {
name: 'MyClass',
primaryKey: 'pk',
properties: {
pk: 'int',
optionalFloatValue: 'float?' // or {type: 'float', optional: true}
listOfStrings: 'string[]',
listOfOptionalDates: 'date?[]',
indexedInt: {type: 'int', indexed: true}
linkToObject: 'MyClass',
listOfObjects: 'MyClass[]', // or {type: 'list', objectType: 'MyClass'}
objectsLinkingToThisObject: {type: 'linkingObjects', objectType: 'MyClass', property: 'linkToObject'}
setOfStrings: 'string',
setOfOptionalStrings: 'string?', // or {type: 'set', objectType: 'string'}
}
};
类型:
Object
属性:
对象的类型可以指定为等于ObjectSchema
定义中的name
的字符串,也可以指定为configuration
schema
中指定的构造函数。
属性类型可以指定为标准内置类型之一,也可以指定为同一模式内的 Realm 对象类型。
在对象模式中指定属性类型时,可以将?
附加到任何属性类型,以指示其是可选的(即,除了普通值之外,它还可以是null
)。 给定类型T ,可以使用以下后缀操作符:
例如, optionalIntList: 'int?[]'
声明一个属性,该属性为可空整数列表,而optionalStringSet: 'string?<>'
声明一组可空字符串。 集合报告的和 Realm 模式中的属性类型永远不会使用这些形式。
类型:
"bool"
或"int"
或"float"
或"double"
或"string"
或"decimal128"
或"objectId"
或"date"
或"data"
或"list"
或"set"
或"linkingObjects"
或"<ObjectType>"