DataSnapshot class

DataSnapshot包含来自数据库位置的数据。

每当您从数据库读取数据时,您都会收到DataSnapshot形式的数据DataSnapshot被传递到您使用on()once()附加的事件回调。您可以通过调用val()方法将快照的内容提取为 JavaScript 对象。或者,您可以通过调用child()来遍历快照以返回子快照(然后您可以对其调用val() )。

DataSnapshot是数据库位置上有效生成的、不可变的数据副本。它无法修改,也永远不会改变(要修改数据,您总是直接在Reference上调用set()方法)。

签名:

export declare class DataSnapshot 

特性

财产修饰符类型描述
钥匙字符串|无效的DataSnapshot位置的键(路径的最后部分)。数据库位置中的最后一个标记被视为其密钥。例如,“ada”是 /users/ada/ 节点的键。访问任何DataSnapshot上的密钥将返回生成该密钥的位置的密钥。但是,访问数据库根 URL 上的键将返回null
优先事项字符串|数量 |无效的获取此DataSnapshot中数据的优先级值。应用程序不需要使用优先级,但可以按普通属性对集合进行排序(请参阅排序和过滤数据)。
参考数据库参考此 DataSnapshot 的位置。
尺寸数字返回此DataSnapshot的子属性的数量。

方法

方法修饰符描述
孩子(路径)获取指定相对路径位置的另一个DataSnapshot将相对路径传递给 DataSnapshot 的child()方法会返回指定相对路径位置的另一个DataSnapshot 。相对路径可以是简单的子名称(例如“ada”),也可以是更深的、以斜杠分隔的路径(例如“ada/name/first”)。如果子位置没有数据,则返回空的DataSnapshot (即值为nullDataSnapshot )。
存在()如果此DataSnapshot包含任何数据,则返回 true。它比使用snapshot.val() !== null稍微高效一些。
导出值()将 DataSnapshot 的全部内容导出为 JavaScript 对象。 exportVal()方法与val()类似,不同之处在于包含优先级信息(如果可用),使其适合备份数据。
对于每个(动作)枚举IteratedDataSnapshot中的顶级子级。由于 JavaScript 对象的工作方式, val()返回的 JavaScript 对象中的数据顺序不能保证与服务器上的顺序或onChildAdded()事件的顺序相匹配。这就是forEach()派上用场的地方。它保证DataSnapshot的子级将按照其查询顺序进行迭代。如果未使用显式orderBy*()方法,则返回按键排序的结果(除非使用优先级,在这种情况下,按优先级返回结果)。
有孩子(路径)如果指定的子路径有(非空)数据,则返回 true。
有孩子()返回DataSnapshot是否具有任何非null子属性。您可以使用hasChildren()来确定DataSnapshot是否有任何子级。如果是,您可以使用forEach()枚举它们。如果没有,则此快照要么包含原始值(可以使用val()检索),要么为空(在这种情况下, val()将返回null )。
toJSON()返回此对象的 JSON 可序列化表示形式。
值()DataSnapshot中提取 JavaScript 值。根据DataSnapshot中的数据, val()方法可能返回标量类型(字符串、数字或布尔值)、数组或对象。它还可能返回 null,表示DataSnapshot为空(不包含数据)。

数据快照.key

DataSnapshot位置的键(路径的最后部分)

数据库位置中的最后一个标记被视为其密钥。例如,“ada”是 /users/ada/ 节点的键。访问任何DataSnapshot上的密钥将返回生成该密钥的位置的密钥。但是,访问数据库根 URL 上的键将返回null

签名:

get key(): string | null;

DataSnapshot.priority

获取此DataSnapshot中数据的优先级值

应用程序不需要使用优先级,但可以按普通属性对集合进行排序(请参阅排序和过滤数据)。

签名:

get priority(): string | number | null;

数据快照.ref

此 DataSnapshot 的位置。

签名:

readonly ref: DatabaseReference;

数据快照大小

返回此DataSnapshot的子属性的数量

签名:

get size(): number;

DataSnapshot.child()

获取指定相对路径位置的另一个DataSnapshot

将相对路径传递给 DataSnapshot 的child()方法会返回指定相对路径位置的另一个DataSnapshot 。相对路径可以是简单的子名称(例如“ada”),也可以是更深的、以斜杠分隔的路径(例如“ada/name/first”)。如果子位置没有数据,则为DataSnapshot DataSnapshot即值为null )被返回。

签名:

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;

参数

范围类型描述
行动(子项:迭代数据快照) => 布尔值 |空白将为每个子 DataSnapshot 调用的函数。回调可以返回 true 以取消进一步的枚举。

返回:

布尔值

true 如果由于回调返回 true 而取消枚举。

DataSnapshot.hasChild()

如果指定的子路径有(非空)数据,则返回 true。

签名:

hasChild(path: string): boolean;

参数

范围类型描述
小路细绳潜在孩子位置的相对路径。

返回:

布尔值

如果指定子路径中存在数据,则为true ;否则为false

DataSnapshot.hasChildren()

返回DataSnapshot是否具有任何非null子属性。

您可以使用hasChildren()来确定DataSnapshot是否有任何子级。如果是,您可以使用forEach()枚举它们。如果没有,则此快照包含一个原始值(可以使用val()检索该值) )或者为空(在这种情况下, val()将返回null )。

签名:

hasChildren(): boolean;

返回:

布尔值

如果此快照有任何子项,则为 true;否则是假的。

DataSnapshot.toJSON()

返回此对象的 JSON 可序列化表示形式。

签名:

toJSON(): object | null;

返回:

对象|无效的

DataSnapshot.val()

DataSnapshot中提取 JavaScript 值

取决于DataSnapshot中的数据val()方法可以返回标量类型(字符串、数字或布尔值)、数组或对象。它还可能返回 null,表示DataSnapshot为空(不包含数据)。

签名:

val(): any;

返回:

任何

DataSnapshot 的内容作为 JavaScript 值(对象、数组、字符串、数字、布尔值或null )。