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 (也就是值為 null 的 DataSnapshot )。 |
|
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
(也就是值為 null
的 DataSnapshot
)。
簽名:
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
) 表示。