繁体   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