特定快照的Firestore查询子集合

时间:2020-05-20 16:18:12

标签: javascript firebase google-cloud-firestore google-cloud-functions

非常简单,我想查询快照的子集合并将其返回到前端。

以下是示例。

const docUser = await db.collection('users').where("slug", "==", req.body.slug).limit(1).get();
if (docUser.empty) return res.status(404).send({ message: 'Could not find user.' });

const collectionProjects = docUser.docs[0].collection('projects'); // Err.
return res.status(200).send({ projects: collectionProjects.data() });

这是我得到的错误。

TypeError:docUser.docs [0] .collection不是函数

我应该如何退还我的projects

1 个答案:

答案 0 :(得分:2)

docUserQuerySnapshot。通过执行docUser.docs[0],您将获得一个QueryDocumentSnapshot。您需要使用此QueryDocumentSnapshot的{​​{3}}属性,以获取可以在其上调用ref方法的DocumentReference

然后再次使用collection()方法,如下所示:

const docUser = await db.collection('users').where("slug", "==", req.body.slug).limit(1).get();
if (docUser.empty) return res.status(404).send({ message: 'Could not find user.' });

const collectionProjects = await docUser.docs[0].ref.collection('projects').get();
//See above the addition of ref

然后使用collectionProjects(即QuerySnapshot)进行任何操作。但请注意,您无法执行collectionProjects.data(),因为data()没有任何QuerySnapshot方法。您可能应该使用get(),或者再次使用docs