相关类
- AsyncOpenTask
- AuthError
- BaseSubscriptionSet
- IncompleteSyncedRealmError
- MutableSubscriptionSet
- 会话
- 订阅
- SubscriptionSet
- UserIdentity
成员
- 待处理
- 类型:
"pending"
或"complete"
或"error"
或"superseded"
- 默认:
pending
订阅更新已在本地持久保存,但服务器尚未返回与更新的订阅查询匹配的所有数据。
- 完成
- 类型:
"pending"
或"complete"
或"error"
或"superseded"
- 默认:
complete
服务器已确认订阅,并在订阅集更新时发送与订阅查询匹配的所有数据。 服务器现在处于稳态同步模式,它将在更新到来时流式传输更新。
- 错误
- 类型:
"pending"
或"complete"
或"error"
或"superseded"
- 默认:
error
服务器返回错误,此 Realm 的同步已暂停。 要查看实际错误,请使用
Subscriptions.error
。您仍可使用
Realm.App.Sync.SubscriptionSet#update
来更新订阅,如果新的更新未trigger错误,则会重新启动同步。- 已取代
- 类型:
"pending"
或"complete"
或"error"
或"superseded"
- 默认:
superseded
该 SubscriptionSet 已被更新的 SubscriptionSet 所取代。 这通常意味着有人在
Subscriptions
的不同实例上调用了Realm.App.Sync.SubscriptionSet#update
。 您不应使用被取代的 SubscriptionSet,而应从Realm.subscriptions
获取新实例。
表示Realm.App.Sync.SubscriptionSet
集状态的枚举。
类型:
"pending"
或"complete"
或"error"
或"superseded"
属性:
方法
- APP 可选
- 类型:
Realm.App
打开 Realm 的应用程序。
- APP
- 类型:
Realm.App
Realm 应用。
- user
- 类型:
Realm.User
- 分区值
- 类型:
string
或number
或ObjectId
或null
- APP 可选
- 类型:
Realm.App
打开 Realm 的应用程序。
- 路径 可选
- 类型:
string
要重置的 Realm 的路径。 如果无法重置,则会引发错误。
- APP
- 类型:
Realm.App
Realm 应用。
- APP
- 类型:
Realm.App
Realm 应用程序。
- 记录器
- 类型:
logCallback
日志回调。
- APP
- 类型:
Realm.App
Realm 应用。
- 等级
- 类型:
LogLevel
新的日志级别。
- APP
- 类型:
Realm.App
Realm 应用
- 用户代理
- 类型:
string
用户代理描述
如果 Realm 仍然引用任何同步会话,无论其状态如何,都返回true
。 如果返回false
,则表示当前不存在会话。
参数:
为 Realm 应用启用通过单个连接复用多个同步会话的功能。 打开大量同步 Realm 时,由于服务器上有所有打开的套接字,系统可能会用完文件描述符。 会话多路复用旨在缓解这个问题,但它可能不适用于配置了故障转移的服务器。 仅当您看到有关达到文件描述符限制的错误并且知道自己正在使用许多同步会话时才使用。
参数:
[Realm.App.Sync.Session, ...]
Realm.App.Sync.Session
返回与用户和分区值关联的会话。
参数:
Realm.App.Sync.Session
会话
启动客户端重置。 在重置之前,必须关闭 Realm。
如果与 Atlas Device Sync 的通信表明存在无法恢复的错误,导致无法继续正常同步,则可能需要重置已同步的 Realm。最常见的原因是客户端断开连接的时间过长。
Realm 的本地副本将移至恢复目录以妥善保管。
未成功同步到 Atlas 的本地写入将出现在 Realm 文件的本地恢复副本中。 重新下载的 Realm 最初仅包含 Realm 在服务器上同步时存在的数据。
参数:
示例:
{
// Once you have opened your Realm, you will have to keep a reference to it.
// In the error handler, this reference is called `realm`
const config = {
// schema, etc.
sync: {
user,
partitionValue,
error: (session, error) => {
if (error.name === 'ClientReset') {
let path = realm.path; // realm.path will no be accessible after realm.close()
realm.close();
Realm.App.Sync.initiateClientReset(app, path);
// - open Realm at `error.config.path` (oldRealm)
// - open Realm with `config` (newRealm)
// - copy required objects from oldRealm to newRealm
// - close both Realms
}
}
}
};
}
调用此方法将强制 Realm 立即尝试将 Realm 应用重新连接到服务器。
Realm 将使用指数退避算法自动重新连接。 这意味着,如果设备长时间离线,则在设备重新上线后恢复连接可能需要比预期更长的时间。 在可以检测到网络状况的情况下(例如 飞行模式)。 手动调用该方法可提供更流畅的用户体验。
参数:
捕获同步客户端的日志。 您只能设置日志级别一次,并且必须在创建 App 实例之后但在打开任何 Realm 之前进行设置。
参数:
示例:
{
const app = new Realm.App(getAppConfig());
Realm.App.Sync.setLogger(app, (level, message) => console.log(`[${level}] ${message}`));
const user = await app.logIn(credentials);
const realm = await Realm.open(getRealmConfig(user));
}
设置同步日志级别。 您只能设置日志级别一次,并且必须在创建 App 实例之后但在打开任何 Realm 之前进行设置。
参数:
示例:
{
const app = new Realm.App(getAppConfig());
Realm.App.Sync.setLogLevel(app, "all");
const user = await app.logIn(credentials);
const realm = await Realm.open(getRealmConfig(user));
}
设置创建会话时将发送到 Realm 对象服务器的用户代理字符串的应用程序部分。
该方法只能在第一个 Realm 打开到点时调用。此后,用户代理无法再更改。
参数:
类型定义
- 模式
- 类型:
string
“manual”(已弃用,另请参阅
Realm.App.Sync.initiateClientReset()
)、“discardUnsyncedChanges”(从服务器下载新副本)、“recoverUnsyncedChanges”(合并远程和本地未同步更改)或“recoverOrDiscardUnsyncedChanges”(从服务器(如果无法恢复未同步的更改)- onBefore 可选
- 类型:
callback(realm)
或null
在 sync 启动客户端重置之前调用(仅适用于“discardUnsyncedChanges”、“recoverUnsyncedChanges”或“recoverOrDiscardUnsyncedChanges”模式)。
- onAfter 可选
- 类型:
callback(beforeRealm, afterRealm)
或null
在执行客户端重置后调用;
beforeRealm
和afterRealm
是客户端重置前后 Realm 的实例(仅适用于“discardUnsyncedChanges”、“recoverUnsyncedChanges”或“recoverOrDiscardUnsyncedChanges”模式)。- onFallback 可选
- 类型:
callback(session, path)
或null
在恢复或丢弃失败时调用(仅适用于“recoverUnsyncedChanges”或“recoverOrDiscardUnsyncedChanges”模式)。
- onManual 可选
- 类型:
callback(session, path)
或null
执行手动客户端重置 - 另请参阅
Realm.App.Sync.initiateClientReset()
(仅限“手动”模式)。- update
- 类型:
callback(realm)
使用
Realm.App.Sync~MutableSubscriptionSet
实例和Realm
实例调用回调,以允许您设置初始订阅集。 有关更多信息,请参阅Realm.App.Sync.SubscriptionSet#update
。- rerunOnOpen
- 类型:
Boolean
可选标志。 如果为
true
,则每次打开 Realm 时都会重新运行update
回调(例如 每次用户打开您的应用时),否则(默认情况下)仅当 Realm 尚不存在时才会运行。- 等级
- 类型:
number
日志条目的级别介于 0 到 8(含)之间。 将其用作
['all', 'trace', 'debug', 'detail', 'info', 'warn', 'error', 'fatal', 'off']
的索引以获取级别的名称。- message
- 类型:
string
日志条目的消息。
- 类型
- 类型:
string
如何打开 Realm - “downloadBeforeOpen”等待下载完成或“openImmediately”打开本地 Realm
- timeOut 可选
- 类型:
number
等待下载的时间(以毫秒为单位)。 默认值:无穷大
- timeOutBehavior 可选
- 类型:
string
下载超时时该怎么办 — 使用“openLocalRealm”打开本地 Realm,或使用“throwException”抛出异常。
- 验证
- 类型:
boolean
指示是否必须验证 SSL 证书。 默认值为
true
。- certificatePath
- 类型:
string
查找受信任 SSL 证书的路径。
- validateCertificates
- 类型:
sslValidateCallback
用于接受或拒绝服务器的 SSL 证书的回调函数。
- 名称
- 类型:
string
或undefined
设置要添加的订阅的名称。 这样,您以后就可以按名称引用订阅,例如在调用
Realm.App.Sync.MutableSubscriptionSet#removeByName
时。- throwOnUpdate
- 类型:
boolean
或undefined
默认情况下,添加与现有订阅同名但不同查询的订阅将使用新查询更新现有订阅。 如果
throwOnUpdate
设置为 true,则添加具有相同名称但不同查询的订阅将引发异常。 添加具有相同名称和查询的订阅始终不需要执行任何操作。- user
- 类型:
Realm.User
通过调用
Realm.App.logIn
获得的Realm.User
对象。- ssl 可选
- 类型:
SSLConfiguration
SSL 配置。
- 灵活
- 类型:
boolean
是否使用Flexible Sync(如果为
true
)或基于分区的同步(默认)- 分区值
- 类型:
string
或number
或BSON.ObjectId
或null
分区键的值。 仅在使用基于分区的同步时有效。
- 首次订阅
- 类型:
InitialSubscriptionsConfiguration
可选对象,用于配置打开 Realm 时使用的一组初始 Flexible Sync 订阅的设置。 仅在使用 Flexible Sync 时有效。 请参阅
Realm.App.Sync~InitialSubscriptionsConfiguration
。- onError 可选
- 类型:
callback(session, syncError)
在错误情况下调用的回调函数。 回调函数会传递两个参数:
session
和syncError
。 如果设置syncError.name == "ClientReset"
、syncError.path
和syncError.config
且syncError.readOnly
为 true(已弃用,请参阅Realm.App.Sync~ClientResetConfiguration
)。 否则,syncError
最多可以有五个属性:name
、message
、isFatal
、category
和code
。- customHttp headers 可选
- 类型:
Object
自定义 HTTP headers 的映射(字符串,字符串)。
- newRealmFileBehavior 可选
- 类型:
OpenRealmBehaviorConfiguration
是创建新的文件并在背景中同步,还是等待文件同步。如果未设置,则会在打开之前下载 Realm。
- existingRealmFileBehavior 可选
- 类型:
OpenRealmBehaviorConfiguration
是打开现有文件并在背景同步,还是等待文件同步完成后再打开。如果未设置,则会在打开之前下载 Realm。
- 客户端重置 可选
- 类型:
ClientResetConfiguration
或null
客户端重置配置
这描述了用于配置客户端重置的选项。
类型:
Object
属性:
如果要等待下载同步 Realm 完成后再打开它,则为默认行为设置。
可选对象,用于配置打开 Realm 时使用的一组初始 Flexible Sync 订阅的设置。 如果指定了此项,则在这组订阅与服务器完全同步之前,不会解析Realm.open
。
示例:
const config: Realm.Configuration = {
sync: {
user,
flexible: true,
initialSubscriptions: {
update: (subs, realm) => {
subs.add(realm.objects('Task'));
},
rerunOnOpen: true,
},
},
// ... rest of config ...
};
const realm = await Realm.open(config);
// At this point, the Realm will be open with the data for the initial set
// subscriptions fully synchronized.
类型:
Object
属性:
使用自定义记录器检测 Atlas Device Sync 客户端时传递给Realm.App.Sync.setLogger
的回调。
参数:
类型:
"all"
或"trace"
或"debug"
或"detail"
或"info"
或"warn"
或"error"
或"fatal"
或"off"
如果要立即打开同步的 Realm 并开始处理,则使用默认行为设置。 如果这是您第一次打开 Realm,则在背景下载服务器数据时,Realm 将为空。
指定如何打开同步 Realm。
类型:
Object
属性:
身份验证提供者的类型,用于对用户进行身份验证。
类型:
"anon-user"
或"api-key"
或"local-userpass"
或"custom-function"
或"custom-token"
或"oauth2-google"
或"oauth2-facebook"
或"oauth2-apple"
这描述了使用 Atlas Device Sync 创建Realm
实例的不同选项。
类型:
Object
属性:
选项 Realm.App.Sync.SubscriptionSet.add
类型:
Object
属性:
本节介绍了用于创建具有 Atlas App Services 同步功能的Realm
实例的不同选项。
类型:
Object