簡體   English   中英

從一組 ID 查詢 firestore 中的文檔

[英]Query documents in firestore from an array of ID's

我想知道如何從 ID 數組的 firestore 集合中查詢文檔? 我只想要集合中 ID 數組中的文檔。 我查看了另一個答案並認為我的方法是正確的,但是,我收到了一個錯誤。

(node:15105) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'data' of undefined
>      at /Users/username/SideProjects/projectname/functions/index.js:40:38
>      at processTicksAndRejections (internal/process/task_queues.js:95:5)

發生錯誤是因為 function 未從該 ID 數組中找到集合中的任何文檔。 但是,我仔細檢查了數據庫,知道集合中有文檔的 ID 來自數組。

const admin = require('firebase-admin')

....

let feedItems = db.collection(feedItemsCollection)

feedItemsList = feedItems.where(admin.firestore.FieldPath.documentId(), 'in', ['HPOorsSnbHpTYwwXxfWw']).get().then(snapshot2 => {
       console.log(admin.firestore.FieldPath.documentId())
       console.log("In feed Items")
       //console.log(feedItemIds)
       console.log(snapshot2[0])

       //error happens on this line because snapshot2[0] returns undefined
       console.log(snapshot2[0].data())
})

Snapshot2[0] 返回未定義,我假設這意味着沒有返回數據。 我認為我沒有正確調用 documentId(),但不知道修復方法。

您的代碼“可能”有兩個問題。 遵循這兩點以確保一切正常

  1. snapshot2中的數據可能為empty

您首先必須修復您的代碼以測試該理論。 您沒有正確訪問snapshot2中的數據。 要做到這一點,一種方法是這樣的:

// `snapshot2` will have a `docs` property that you can leverage
const snapshot2Data = snapshot2.docs.map((doc) => doc.data());
  1. .documentId()可能沒有做它應該做的事(如你所說)

要測試這個理論,請檢查snapshot2Data是否為空。 跑步:

console.log(snapshot2Data); // what do you get ?

如果不是,則它不為空並且您已取回數據,那么一切就緒。 無事可做

如果是,則為空,然后運行:

console.log(admin.firestore.FieldPath.documentId()); // what do you get ?

你找回string了嗎? 如果不是,那么我們還有另一個問題。 您還需要仔細查看您的firebase-admin設置。

暫無
暫無

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

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