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 (即值为null 的DataSnapshot )。 | |
存在() | 如果此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
)。