簡體   English   中英

無法對時間戳執行 Firebase 查詢並收到空正文作為響應

[英]Unable to perform a Firebase query on a timestamp and receiving an empty body in response

有人可以向我解釋為什么我無法執行簡單的 Firebase 查詢檢查子集合中的特定時間戳嗎? 如果我嘗試檢索整個文檔,則下面的代碼可以工作,但如果我添加where查詢,它只會返回一個 200 響應和一個空正文。 我還嘗試將db.collection替換為db.collectionGroup ,在這種情況下,我收到 500 響應,並顯示以下消息Collection IDs must not contain '/'

在這里,您可以看到我是如何構建數據和代碼的:

在此處輸入圖像描述

try {
     const reference = db.collection(`/data/10546781/history`).where("timestamp", "==", 1659559179735)
        
     const document = await reference.get()
        
     res.status(200).json(document.forEach(doc => {
         doc.data()
         console.log(doc.data())
     }))
        
} catch(error) {
    res.status(500).json(error)
    console.log(error)
};

看來您正在尋找創建新數組的map()而不是不返回任何內容的forEach()循環。 嘗試:

const reference = db.collection(`/data/10546781/history`).where("realtimeData.timestamp", "==", 1659559179735)        

const snapshot = await reference.get()

const data = snapshot.docs.map((d) => ({
  id: d.id,
  ...d.data()
}))

res.status(200).json(data)

此外,如果要基於嵌套字段進行查詢,則需要使用點表示法。

@Dharmaraj 感謝您的幫助。 您的回答是解決方案的一部分。 另一部分涉及我的數據的結構。 時間戳需要位於子集合文檔的父級。 因此,無論是在realTimeData object 之外還是整個 object 都需要在父級進行展平。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM