我收集了很多餐馆。
的数据
我想检索单个文档。但是,我没有documentID,我只有电子邮件,所以我想写一个查询,当我给予它一个电子邮件字段是唯一的,将不会有重复的文档。
我现在正在使用这个愚蠢的查询:
const q = query(
collection(fireStore, "restaurant"),
where("email", "==", user?.email),
limit(1)
)
const querySnapshot = await getDocs(q);
querySnapshot.forEach((doc) => {
setRestaurant(doc.data());
});
字符串
querySnapshot是一个包含单个元素的数组。
有没有可能写一个查询,返回单个文档,而不是单个文档的数组?
或者你也可以建议更好的方法来做这件事,比如首先找到documentID,然后用documentID检索。
2条答案
按热度按时间a1o7rhls1#
由于一个查询可以匹配多个文档,因此它总是返回一个
QuerySnapshot
,并且总是包含一个文档数组。即使查询只返回一个文档,它也将是QuerySnapshot
和数组的形式。如果你知道只有一个文档,或者如果你只关心结果的第一个文档,你可以访问它而不需要循环:
字符串
bq3bfh9z2#
作为Frank's answer的替代方案,您还可以创建自己的getter函数,该函数返回第一个结果,就像使用
getDoc()
一样。字符串
然后你可以像这样在代码中的其他地方使用它:
型