首页 > 解决方案 > 特定快照的 Firestore 查询子集合

问题描述

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

这是示例。

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

标签: javascriptfirebasegoogle-cloud-firestoregoogle-cloud-functions

解决方案


docUser是一个QuerySnapshot。通过这样做docUser.docs[0],你得到一个QueryDocumentSnapshot. 您需要使用refthis 的属性QueryDocumentSnapshot来获取DocumentReference可以调用该方法的collection()方法。

然后再次使用该get()方法,如下:

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()方法可用于 a QuerySnapshot。您可能应该使用forEach()or,再次,docs.


推荐阅读