Firebase 使用云函数查询Firestore数据库中的子集合
最近,我决定将我的Firebase数据库迁移到。我以为这将是一个巨大的进步,但我恐怕不是。无论如何,我遇到了这样一种情况:我希望能够过滤文档子集合中的元素 我的结构如下:Firebase 使用云函数查询Firestore数据库中的子集合,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,最近,我决定将我的Firebase数据库迁移到。我以为这将是一个巨大的进步,但我恐怕不是。无论如何,我遇到了这样一种情况:我希望能够过滤文档子集合中的元素 我的结构如下: Mailboxes: [ { id: vhR4bfqyo9Uqn2ONbgPv, address: "Address 1", packages: [ { id: qyo9Uqn2vhR4bfqy,
Mailboxes: [
{
id: vhR4bfqyo9Uqn2ONbgPv,
address: "Address 1",
packages: [
{
id: qyo9Uqn2vhR4bfqy,
value: "0011"
},
{
id: 9Uqn2qyovqyhR4bf,
value: "0022"
}
]
},
{
id: BBR4bfqyo9Uqn2ONbEpn,
address: "Address 2",
packages: [
{
id: qn2vhR4bfqyqyo9U,
value: "0066"
}
]
}
]
假设我有一个包的值,我想看看这个包是否存在于id为vhR4bfqyo9Uqn2ONbgPv的邮箱中
到目前为止,我尝试了以下内容和一些变体:
db.collection('Mailboxes').doc('vhR4bfqyo9Uqn2ONbgPv').listCollections().then(collections => {
let collRef = collections.find("id", "==", "packages");
// And, from here on, I assume I will be able to filter the items in the collection somehow.
return 0;
});
但是,我在Firebase云函数中得到一个错误,它说:
TypeError:id不是函数
在Array.find native
位于db.collection.doc.listCollections.then.collections
在这里,包本身是一个数组,而不是Firestore子集合
对于子集合,您的查询如下所示:
db.collection('Mailboxes').doc('vhR4bfqyo9Uqn2ONbgPv')
.collection('packages').where('value','==', '0022').get()
如果我正确理解了您的用例…根据Doug的回答,我认为您可能需要将包密钥直接复制为邮箱对象中的数组:它看起来像数组,但实际上是Firebase上的子集合。我只是想用JSON来表示它,以便于阅读。公平地说,我想到了这一点。我不明白为什么要使用listCollections,因为您有要查询的邮箱的id。。。