借助 onDisconnect
类,您可以在客户端与数据库服务器断开连接时写入或清除数据。无论客户端是否正常断开连接,这些更新都会进行,因此,即使连接中断或客户端崩溃,您仍可以依靠此类更新来清理数据。
onDisconnect
类最常用于管理应用中的在线状态,对于检测连接的客户端数量以及其他客户端断开连接的情况非常有用。如需了解详情,请参阅在 JavaScript 中启用离线功能。
为避免在将请求传输到数据库服务器之前连接断开时出现问题,应该在写入任何数据之前调用这些函数。
请注意,onDisconnect
操作仅触发一次。如果您希望在每次断开连接时都执行操作,则需要在每次重新连接时都重新建立 onDisconnect
操作。
签名:
export declare class OnDisconnect
方法
方法 | 修饰符 | 说明 |
---|---|---|
cancel() | 取消之前针对此位置及所有子位置加入队列的所有 onDisconnect() 设置或更新事件。如果在此位置已通过父位置的 set() 或 update() 将写入操作加入队列,则在此位置进行的写入操作将被取消,但对同级位置的写入操作仍会发生。 |
|
remove() | 确保在客户端断开连接(由于关闭浏览器、转到新页面或网络问题)时,系统会删除此位置中的数据。 | |
set(value) | 确保当客户端断开连接(由于关闭浏览器、转到新页面或网络问题)时,此位置的数据会设置为指定的值。set() 对于实现“在线状态”功能特别有用。系统,在用户断开连接时应更改或清除某个值,以使其显示为“离线”其他用户的信息。如需了解详情,请参阅在 JavaScript 中启用离线功能。请注意,onDisconnect 操作仅触发一次。如果您希望在每次断开连接时都执行操作,则每次都需要重新建立 onDisconnect 操作。 |
|
setWithPriority(value, priority) | 确保在客户端断开连接(由于关闭浏览器、转到新页面或网络问题)时,此位置的数据已设为指定的值和优先级。 | |
update(values) | 当客户端断开连接(由于关闭浏览器、导航到新页面或网络问题)时,会在此位置写入多个值。values 参数包含多个将一起写入数据库的“属性-值”对。每个子属性可以是简单的属性(例如“name”),也可以是从当前位置到要更新的数据的相对路径(例如“name/first”)。与 set() 方法相反,update() 可用于选择性地仅更新当前位置中引用的属性(而不是替换当前位置的所有子属性)。 |
OnDisconnect.cancel()
取消针对此位置及所有子位置之前已加入队列的所有 onDisconnect()
设置或更新事件。
如果对父位置的 set()
或 update()
写入已针对此位置加入队列,则在此位置的写入将被取消,但对同级位置的写入操作仍会发生。
签名:
cancel(): Promise<void>;
返回:
承诺<void>
与服务器同步完成时解析。
OnDisconnect.remove()
确保在客户端断开连接(由于关闭浏览器、转到新页面或网络问题)时,系统会删除此位置中的数据。
签名:
remove(): Promise<void>;
返回:
承诺<void>
与服务器同步完成时解析。
OnDisconnect.set()
确保在客户端断开连接(由于关闭浏览器、转到新页面或网络问题)时,此位置的数据会设置为指定的值。
set()
对于实现“在线状态”功能特别有用系统,在用户断开连接时应更改或清除某个值,以使其显示为“离线”其他用户的信息。如需了解详情,请参阅在 JavaScript 中启用离线功能。
请注意,onDisconnect
操作仅触发一次。如果您希望在每次断开连接时都执行操作,则每次都需要重新建立 onDisconnect
操作。
签名:
set(value: unknown): Promise<void>;
参数
参数 | 类型 | 说明 |
---|---|---|
值 | 未知 | 断开连接时要写入此位置的值(可以是对象、数组、字符串、数字、布尔值或 null)。 |
返回:
承诺<void>
与数据库同步完成时解析。
OnDisconnect.setWithPriority()
确保在客户端断开连接(由于关闭浏览器、转到新页面或网络问题)时,此位置的数据已设为指定的值和优先级。
签名:
setWithPriority(value: unknown, priority: number | string | null): Promise<void>;
参数
参数 | 类型 | 说明 |
---|---|---|
值 | 未知 | 断开连接时要写入此位置的值(可以是对象、数组、字符串、数字、布尔值或 null)。 |
优先级 | 数字 |字符串 |null | 要写入的优先级(字符串、数字或 null)。 |
返回:
承诺<void>
与数据库同步完成时解析。
OnDisconnect.update()
当客户端断开连接(由于关闭浏览器、导航到新页面或网络问题)时,在此位置写入多个值。
values
参数包含多个将一起写入数据库的“属性-值”对。每个子属性可以是简单属性(例如“name”),也可以是从当前位置到要更新的数据的相对路径(例如“name/first”)。
与 set()
方法相反,您可以使用 update()
有选择地仅更新当前位置被引用的属性(而不是替换当前位置的所有子属性)。
签名:
update(values: object): Promise<void>;
参数
参数 | 类型 | 说明 |
---|---|---|
值 | 对象 | 包含多个值的对象。 |
返回:
承诺<void>
与数据库同步完成时解析。