javascript - 特定快照的 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
?
解决方案
docUser
是一个QuerySnapshot
。通过这样做docUser.docs[0]
,你得到一个QueryDocumentSnapshot
. 您需要使用ref
this 的属性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
.
推荐阅读
- amazon-web-services - RDS 故障转移到哪个可用区?
- javascript - iPhone 使用 exec() 停止运行 Javascript
- javascript - 如何使从更改颜色主题的复选框样式化的切换按钮在刷新期间保持相同颜色
- winapi - 您如何检测前/后间隙以计算 CD-ROM 中的确切轨道长度?
- latex - 您知道制作此类图表的任何工具吗?
- python - 如何将文件从 Django admin 直接上传到 Google Cloud Storage,以及如何在模板中呈现它们?
- python - 通过嵌套字典过滤
- ruby-on-rails - 从 API 访问嵌套 JSON 响应中的某些值
- node.js - 如何在同一个域上部署 2 个应用程序?
- kotlin - 是否可以使用 KType 作为泛型类型参数参数?