DataSnapshot
包含来自 Database 位置的数据。
每次从数据库读取数据时,您都会以 DataSnapshot
的形式收到数据。系统会将 DataSnapshot
传递给您使用 on()
或 once()
附加的事件回调。您可以通过调用 val()
方法将快照的内容提取为 JavaScript 对象。或者,您也可以通过调用 child()
返回子快照(随后可对其调用 val()
),遍历到该快照。
DataSnapshot
是在 Database 位置高效生成的不可变数据副本。它无法修改,也永远不会改变(若要修改数据,您始终是直接对 Reference
调用 set()
方法)。
签名:
export declare class DataSnapshot
属性
属性 | 修饰符 | 类型 | 说明 |
---|---|---|---|
key | 字符串 |null | 此 DataSnapshot 位置的键(路径的最后部分)。数据库位置中的最后一个令牌被视为其键。例如,"ada"是 /users/ada/ 节点的密钥。在任何 DataSnapshot 上访问该密钥都会返回生成该密钥的位置对应的密钥。但是,访问数据库的根网址上的密钥将返回 null 。 |
|
优先级 | 字符串 |数字 |null | 获取此 DataSnapshot 中数据的优先级值。应用不需要使用优先级,但可以按普通属性对集合进行排序(请参阅对数据进行排序和过滤)。 |
|
参考 | DatabaseReference | 此 DataSnapshot 的位置。 | |
size | 数字 | 返回此 DataSnapshot 的子属性的数量。 |
方法
方法 | 修饰符 | 说明 |
---|---|---|
child(path) | 获取指定相对路径处位置的另一个 DataSnapshot 。将相对路径传递给 DataSnapshot 的 child() 方法会返回指定相对路径处位置的另一个 DataSnapshot 。相对路径可以是简单的子名称(例如“ada”),也可以是更深层且以斜杠分隔的路径(例如“ada/name/first”)。如果子位置没有任何数据,则返回空的 DataSnapshot (即,值为 null 的 DataSnapshot )。 |
|
exists() | 如果此 DataSnapshot 包含任何数据,则返回 true。它的效率略高于使用 snapshot.val() !== null 。 |
|
exportVal() | 将 DataSnapshot 的全部内容导出为 JavaScript 对象。exportVal() 方法与 val() 类似,不同之处在于前者包含优先级信息(如果有),因此适合备份您的数据。 |
|
foreach(action) | 枚举 IteratedDataSnapshot 中的顶级子项。由于 JavaScript 对象的工作方式,val() 返回的 JavaScript 对象中数据的排序不保证与服务器上的排序一致,也无法保证与 onChildAdded() 事件的顺序一致。这正是 forEach() 的用武之地。它可保证 DataSnapshot 的子项将按查询顺序进行迭代。如果未使用显式 orderBy*() 方法,结果将按键排序(除非使用了优先级,在这种情况下,结果会按优先级返回)。 |
|
hasChild(path) | 如果指定的子路径具有(非 null)数据,则返回 true。 | |
hasChildren() | 返回 DataSnapshot 是否具有任何非 null 子属性。您可以使用 hasChildren() 确定 DataSnapshot 是否有任何子属性。如果支持,您可以使用 forEach() 枚举它们。如果没有,则表示此快照包含原始值(可通过 val() 检索)或为空(在这种情况下,val() 将返回 null )。 |
|
toJSON() | 返回此对象的可序列化 JSON 表示法。 | |
val(), | 从 DataSnapshot 中提取 JavaScript 值。val() 方法可能会返回标量类型(字符串、数字或布尔值)、数组或对象,具体取决于 DataSnapshot 中的数据。它也可能会返回 null,这表示 DataSnapshot 为空(不包含任何数据)。 |
DataSnapshot.key
此 DataSnapshot
所在位置的键(路径的最后部分)。
数据库位置中的最后一个令牌被视为其键。例如,"ada"是 /users/ada/ 节点的密钥。在任何 DataSnapshot
上访问该密钥都会返回生成该密钥的位置对应的密钥。但是,访问数据库的根网址上的密钥将返回 null
。
签名:
get key(): string | null;
数据快照.优先级
获取此 DataSnapshot
中数据的优先级值。
应用不需要使用优先级,但可以按普通属性对集合进行排序(请参阅对数据进行排序和过滤)。
签名:
get priority(): string | number | null;
数据快照.ref
此 DataSnapshot 的位置。
签名:
readonly ref: DatabaseReference;
DataSnapshot.size
返回此 DataSnapshot
的子属性的数量。
签名:
get size(): number;
DataSnapshot.child()
获取指定相对路径中位置的另一个 DataSnapshot
。
将相对路径传递给 DataSnapshot 的 child()
方法会返回位于指定相对路径下的位置的另一个 DataSnapshot
。相对路径可以是简单的子名称(例如“ada”),也可以是更深层且以斜杠分隔的路径(例如“ada/name/first”)。如果子位置没有任何数据,则返回空的 DataSnapshot
(即,值为 null
的 DataSnapshot
)。
签名:
child(path: string): DataSnapshot;
参数
参数 | 类型 | 说明 |
---|---|---|
路径 | 字符串 | 子数据位置的相对路径。 |
返回:
DataSnapshot.exists()
如果此 DataSnapshot
包含任何数据,则返回 true。它的效率略高于使用 snapshot.val() !== null
。
签名:
exists(): boolean;
返回:
布尔值
DataSnapshot.exportVal()
将 DataSnapshot 的全部内容导出为 JavaScript 对象。
exportVal()
方法类似于 val()
,不同之处在于它包含优先级信息(如果有),因此适合备份数据。
签名:
exportVal(): any;
返回:
任意
DataSnapshot 的内容,采用 JavaScript 值的形式(对象、数组、字符串、数字、布尔值或 null
)。
调用 DataSnapshot.forEach()
枚举 IteratedDataSnapshot
中的顶级子项。
由于 JavaScript 对象的工作方式,val()
返回的 JavaScript 对象中数据的排序不一定与服务器上的排序一致,也无法保证与 onChildAdded()
事件的顺序一致。这正是 forEach()
的用武之地。它可保证 DataSnapshot
的子项将按其查询顺序进行迭代。
如果未使用显式 orderBy*()
方法,则返回结果按键排序(除非使用了优先级,在这种情况下,结果将按优先级返回)。
签名:
forEach(action: (child: IteratedDataSnapshot) => boolean | void): boolean;
参数
参数 | 类型 | 说明 |
---|---|---|
操作 | (子项:IteratedDataSnapshot)=>布尔值 |无效 | 将为每个子 DataSnapshot 调用的函数。该回调可以返回 true 来取消进一步的枚举。 |
返回:
布尔值
如果因回调返回 true 而导致枚举取消,则为 true。
DataSnapshot.hasChild()
如果指定的子路径具有(非 null)数据,则返回 true。
签名:
hasChild(path: string): boolean;
参数
参数 | 类型 | 说明 |
---|---|---|
路径 | 字符串 | 潜在子女所在位置的相对路径。 |
返回:
布尔值
如果指定子路径中存在数据,则返回 true
;其他 false
。
DataSnapshot.hasChildren()
返回 DataSnapshot
是否具有任何非 null
子属性。
您可以使用 hasChildren()
确定 DataSnapshot
是否有任何子项。如果支持,您可以使用 forEach()
枚举它们。如果没有,则表示此快照包含原始值(可通过 val()
检索)或为空(在这种情况下,val()
将返回 null
)。
签名:
hasChildren(): boolean;
返回:
布尔值
如果该快照有任何子项,则返回 true;否则设为 false。
DataSnapshot.toJSON()
返回此对象的可序列化 JSON 表示法。
签名:
toJSON(): object | null;
返回:
对象 |null
DataSnapshot.val()
从 DataSnapshot
中提取 JavaScript 值。
根据 DataSnapshot
中的数据,val()
方法可能会返回标量类型(字符串、数字或布尔值)、数组或对象。它也可能会返回 null,这表示 DataSnapshot
为空(不包含任何数据)。
签名:
val(): any;
返回:
任意
DataSnapshot 的内容,采用 JavaScript 值的形式(对象、数组、字符串、数字、布尔值或 null
)。