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 )。