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