从一组 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)
发生错误是因为该函数未从该 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] returns undefined 我假设这意味着没有返回任何数据。我想我没有正确调用 documentId(),但不知道修复方法。
您的代码“可能”有两个问题。遵循这两点以确保一切正常
- 里面的数据
snapshot2
也许empty
您首先必须修正您的代码以检验这一理论。您没有正确访问 snapshot2
中的数据。要做到这一点,一种方法是:
// `snapshot2` will have a `docs` property that you can leverage
const snapshot2Data = snapshot2.docs.map((doc) => doc.data());
.documentId()
可能没有做它应该做的事(如你所说)
要检验这个理论,请检查 snapshot2Data
是否为空。 运行 :
console.log(snapshot2Data); // what do you get ?
如果不是,则它不是空的并且您已取回数据,那么一切就绪。无事可做
如果是,则为空,则运行:
console.log(admin.firestore.FieldPath.documentId()); // what do you get ?
你找回 string
了吗?如果不是,那么我们还有另一个问题。您还需要仔细查看 firebase-admin
设置。
我想知道如何从 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)
发生错误是因为该函数未从该 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] returns undefined 我假设这意味着没有返回任何数据。我想我没有正确调用 documentId(),但不知道修复方法。
您的代码“可能”有两个问题。遵循这两点以确保一切正常
- 里面的数据
snapshot2
也许empty
您首先必须修正您的代码以检验这一理论。您没有正确访问 snapshot2
中的数据。要做到这一点,一种方法是:
// `snapshot2` will have a `docs` property that you can leverage
const snapshot2Data = snapshot2.docs.map((doc) => doc.data());
.documentId()
可能没有做它应该做的事(如你所说)
要检验这个理论,请检查 snapshot2Data
是否为空。 运行 :
console.log(snapshot2Data); // what do you get ?
如果不是,则它不是空的并且您已取回数据,那么一切就绪。无事可做
如果是,则为空,则运行:
console.log(admin.firestore.FieldPath.documentId()); // what do you get ?
你找回 string
了吗?如果不是,那么我们还有另一个问题。您还需要仔细查看 firebase-admin
设置。