DataSnapshot class

DataSnapshot 包含資料庫位置中的資料。

每當您讀取資料庫中的資料時,資料都會以 DataSnapshot 的形式收到。DataSnapshot 會傳遞到您使用 on()once() 附加的事件回呼。您可以呼叫 val() 方法,將快照內容擷取為 JavaScript 物件。或者,您可以呼叫 child() 傳回子快照 (然後呼叫 val()) 來週遊快照。

DataSnapshot 是有效率地產生且無法變更的資料庫位置資料副本。不可修改且永遠不會變更 (如要修改資料,您必須一律直接對 Reference 呼叫 set() 方法)。

簽名:

export declare class DataSnapshot 

屬性

屬性 修飾符 類型 說明
key 字串 |空值 這個 DataSnapshot 位置的金鑰 (路徑的最後部分)。資料庫位置中的最後一個符記即為其金鑰。例如「ada」是 /users/ada/ 節點的鍵在任何 DataSnapshot 上存取金鑰時,系統會針對產生金鑰的位置傳回金鑰。不過,存取資料庫根網址上的金鑰會傳回 null
優先順序 字串 |數字 |空值 取得此 DataSnapshot 中資料的優先順序值。應用程式不需使用優先順序,但可以按照一般屬性排序集合 (請參閱排序及篩選資料)。
參考資料 資料庫參考資料 這個 DataSnapshot 的位置。
size [尺寸] 數字 傳回此 DataSnapshot 的子屬性數量。

方法

方法 修飾符 說明
child(路徑) 針對指定相對路徑中的位置取得另一個 DataSnapshot如果傳遞 DataSnapshot 的 child() 方法的相對路徑,會傳回另一個 DataSnapshot 代表指定相對路徑中的位置。相對路徑可以是簡單的子項名稱 (例如「ada」),或是更深入的斜線分隔路徑 (例如「ada/name/first」)。如果子位置沒有資料,則會傳回空白 DataSnapshot (也就是值為 nullDataSnapshot)。
exists() 如果這個 DataSnapshot 包含任何資料,則傳回 true。這比使用 snapshot.val() !== null 稍有效率。
exportVal() 將 DataSnapshot 的全部內容匯出為 JavaScript 物件。exportVal() 方法與 val() 類似,但包含優先順序資訊 (如果有的話),因此適合用於備份資料。
forEach(action) 列舉 IteratedDataSnapshot 中的頂層子項。基於 JavaScript 物件的運作方式,val() 所傳回 JavaScript 物件中的資料順序無法保證與伺服器上的順序或 onChildAdded() 事件的順序一致。這時 forEach() 能夠派上用場。這可確保 DataSnapshot 的子項會依查詢順序疊代。如未使用明確的 orderBy*() 方法,則會根據索引鍵排序結果 (除非使用優先順序,在此情況下,系統會按照優先順序傳回結果)。
hasChild(path) 如果指定的子路徑具有 (非空值) 資料,則傳回 true。
hasChildren() 傳回 DataSnapshot 是否含有任何非 null 的子項屬性。您可以使用 hasChildren() 判斷 DataSnapshot 是否含有任何子項。如果是,您可以使用 forEach() 進行列舉。如果沒有,則這個快照會包含原始值 (可使用 val() 擷取) 或空白 (在這種情況下,val() 會傳回 null)。
toJSON() 傳回此物件的 JSON 可序列化表示法。
val() DataSnapshot 擷取 JavaScript 值。val() 方法可能會根據 DataSnapshot 中的資料,傳回純量類型 (字串、數字或布林值)、陣列或物件。此外,也可能傳回空值,表示 DataSnapshot 為空白 (不包含資料)。

DataSnapshot.key

這個 DataSnapshot 位置的鍵 (路徑的最後部分)。

系統會將資料庫位置中的最後一個權杖視為其金鑰。例如「ada」是 /users/ada/ 節點的鍵在任何 DataSnapshot 上存取金鑰時,系統會針對產生金鑰的位置傳回金鑰。不過,存取資料庫根網址的金鑰會傳回 null

簽名:

get key(): string | null;

DataSnapshot.Priority

取得此DataSnapshot中資料的優先順序值。

應用程式不需使用優先順序,但可以按照一般屬性排序集合 (請參閱排序及篩選資料)。

簽名:

get priority(): string | number | null;

DataSnapshot.ref

這個 DataSnapshot 的位置。

簽名:

readonly ref: DatabaseReference;

DataSnapshot.size

傳回這個 DataSnapshot 的子屬性數量。

簽名:

get size(): number;

DataSnapshot.child()

針對指定相對路徑中的位置取得另一個 DataSnapshot

將相對路徑傳送至 DataSnapshot 的 child() 方法,會傳回位置在指定相對路徑上另一個 DataSnapshot。相對路徑可以是簡單的子項名稱 (例如「ada」),或是更深入的斜線分隔路徑 (例如「ada/name/first」)。如果子項位置沒有資料,則會傳回空白 DataSnapshot (也就是值為 nullDataSnapshot)。

簽名:

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) =>布林值 |void 系統會為每個子項 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;反之為 false。

DataSnapshot.toJSON()

傳回此物件的 JSON 可序列化表示法。

簽名:

toJSON(): object | null;

傳回:

物件 |空值

DataSnapshot.val()

DataSnapshot 擷取 JavaScript 值。

DataSnapshot 中的資料而定,val() 方法可能會傳回純量類型 (字串、數字或布林值)、陣列或物件。此外,也可能傳回空值,表示 DataSnapshot 為空白 (不包含資料)。

簽名:

val(): any;

傳回:

不限

DataSnapshot 的內容以 JavaScript 值 (物件、陣列、字串、數字、布林值或 null) 表示。